Cài đặt Laravel

Yêu cầu về môi trường code (hoặc server)

– Trước khi cài đặt Laravel, bạn cần đảm bảo môi trường code (trên localhost) hoặc trên hosting/vps/server của bạn đã thỏa mãn các yêu cầu sau:

+ Phiên bản PHP từ 5.5.9 trở lên
+ Extension OpenSSL, PDO, Mbstring,Tokenizer của PHP đã được cài đặt và đang hoạt động

Cài đặt Laravel

– Laravel sử dụng Composer để quản lý các gói package phụ thuộc, do đó trước khi cài Laravel bạn hãy tiến hành cài Composer trước. Bạn có thể tìm hiểu cách tài về và cài đặt Composer tại trang chủ của nó

a) Cài đặt thông qua Laravel Installer

– Đầu tiên bạn download Laravel Installer thông qua Composer

– Hãy chắc rằng đường dẫn đến thư mục ~/.composer/vendor/bin (tương ứng trên mỗi hệ điều hành có thể khác nhau) đã nằm trong đường dẫn PATH để câu lệnh laravel có thể được thực thi. Sau khi cài đặt xong, bạn có thể tạo ứng dụng web mới bằng Laravel thông qua câu lệnh sau (blog là tên ứng dụng web của bạn)

b) Cài đặt thông qua Composer Create-project

– Ngoài cách trên bạn có thể sử dụng dòng lệnh create-project của composer

Cấu hình Laravel

– Tất cả những file cấu hình của Laravel được lưu trong thư mục config trong ứng dụng web của bạn

a) Quyền truy cập vào các directory (đường dẫn)

– Sau khi cài đặt Laravel, bạn cần đảm bảo rằng các đường dẫn storagebootstrap/cache đã được cấp quyền cho phép ghi (write) trên môi trường code hoặc trên hosting/vps/server của bạn, nếu không thì Laravel sẽ không chạy được.

b) Mã key của ứng dụng (application key)

– Điều cần làm tiếp theo quan trọng không kém đó là bạn phải thiết lập 1 chuỗi key ngẫu nhiên cho ứng dụng web của bạn. Nếu bạn đã cài đặt Laravel thông qua Composer hoặc Laravel Installer, mã key này sẽ được set thông qua dòng lệnh

– Thông thường chuỗi key này sẽ dài 32 ký tự. Key này được lưu tại file .env (viết tắt của environment file). Nếu bạn chưa đổi tên file .env.example thành .env thì bạn nên làm ngay. Nếu mã key của ứng dụng không được thiết lập, thì sessions và những dữ liệu được mã hóa sẽ không được bảo mật tốt.

c) Những cấu hình khác

– Bạn có thể cấu hình các thông số khác tại file config/app.php. Một số tùy chọn như timezone (múi giờ), locale bạn có thể điều chỉnh lại cho phù hợp. Ngoài ra bạn có thể cấu hình một số thành phần của Laravel như:

+ Cache
+ Database
+ Session

Middleware trong Laravel

Giới thiệu

Middleware cung cấp một giải pháp khá tiện ích cho việc filtering HTTP các requests vào ứng dụng. Ví dụ, Laravel có chứa một middleware xác thực người dùng đăng nhập vào hệ thống. Nếu user chưa đăng nhập, middleware sẽ chuyển hướng user tới màn hình đăng nhập. Tuy nhiên, nếu user đã đăng nhập rồi, thì middleware sẽ cho phép request được thực hiện tiếp tiến trình xử lý vào ứng dụng.

Tất nhiên, bạn có thể viết thêm middleware để thực hiện nhiều tác vụ nữa ngoài kiểm tra đăng nhập vào hệ thống. Một CORS middleware có trách nhiệm cho việc thêm các header hợp lý vào trong tất cả các response gửi ra ngoài. Một logging middleware có thể ghi log cho tất cả các request tới ứng dụng.

Có vài middleware đã có sẵn trong Laravel framework, bao gồm middlware xác thực, CSRF protection. Tất cả được nằm trong thư mục app/Http/Middleware.

Tạo Middleware

Để tạo mới một middleware, sử dụng lệnh make:middleware:

Câu lệnh này sẽ tạo ra class CheckAge bên trong thư mục app/Http/Middleware. Trong middleware này, chúng ta chỉ cho phép truy cập vào route nếu giá trị age lớn hơn 200. Ngược lại, chúng ta sẽ chuyển hướng request lại trang home URI.

Như bạn thấy, nếu biến age nhỏ hơn hoặc bằng 200, middleware sẽ trả về một HTTP tới client; ngược lại, request sẽ được gửi tiếp để xử lý. Để truyền request vào sâu hơn trong ứng dụng (cho phép middleware “vượt qua”), đơn giản chỉ cần gọi callback $next với $request.

Tốt nhất hãy hình dung như là một chuỗi các “lớp” trên HTTP requests cần phải đi qua trước khi nó vào ứng dụng. Mỗi lớp sẽ được kiểm tra request và thậm chí có thể hủy từ chối request hoàn toàn.

Trước & Sau Middleware

Việc middleware chạy trước hay chạy sau một request phụ thuộc vào chính nó. Ví dụ, middleware dưới đây sẽ làm một vào tác vụ trước khi request được chương trình xử lý:

Tất nhiên, middleware này sẽ thực hiện việc của nó sau khi request được xử lý bởi ứng dụng:

Đăng ký Middleware

Global Middleware

Nếu bạn muốn một middleware có thể thực thi trong mọi HTTP request tới ứng dụng của bạn, đơn giản chỉ cần thêm tên class của middleware trong thuộc tính $middleware của class app/Http/Kernel.php.

Gán Middleware vào Routes

Nếu bạn muốn gán middleware cho route cụ thể, đầu tiên bạn cần thêm middleware đấy vào trong file app/Http/Kernel.php. Mặc định, thuộc tính $routeMiddleware sẽ chứa một số class thuộc middleware của framework Laravel. Để thêm middleware của bạn, đơn giản chỉ là thêm nó vào dach sách và gán từ khóa bạn chọn. Ví dụ:

Khi middleware đã được định nghĩa trong HTTP kernel, bạn có thể sử dụng phương thức middleware gán cho một route:

Ngoài ra bạn cũng có thể gán nhiều middleware cho một route:

Khi đã gán middleware, bạn cũng có thể sử dụng tên đầy đủ của middleware:

Nhóm Middleware

Thỉnh thoảng bạn muốn nhóm một vài middleware lại trong một khóa để thực hiện gán vào route dễ dàng hơn. Bạn có thể sử dụng thuộc tính $middlewareGroups của HTTP kernel.

Mặc định, Laravel cung cấp sắp 2 nhóm middleware web và api chứa những middleware thường sử dụng mà bạn có thể muốn áp dụng cho web UI và API routes:

Nhóm middleware được gán vào routes và controller sử dụng cú pháp tương tự như với từng middleware. Một lần nữa, nhóm middleware làm đơn giản trong việc gán các middleware vào trong một route:

Tham số middleware

Middleware cũng có thể nhận thêm các tham số truyền vào. Ví dụ, nếu ứng dụng của bạn cần xác thực có “role” cụ thể trước khi thực hiện một thao tác nào đó, bạn có thể tạo một CheckRole middleware để nhận tên của role như một tham số.

Thêm các tham số middleware sẽ dược truyền vào middleware ngay sau tham số $next của hàm handle:

Tham số middleware có thể được khai báo trên route bằng cách phân chia tên middleware và tham số bởi dấu :. nhiều thao số thì phân chia bởi dấy phẩy:

Terminable Middleware

Thỉnh thoảng một middleware có thể cần thực hiện sau khi HTTP response đã được gửi xong cho trình duyệt. Ví dụ, “session” middleware đi kèm với Laravel cung cấp dữ liệu session cho storage sau khi response được gửi tới trình duyệt. Nếu bạn định nghĩa một terminate vào trong middleware, nó sẽ tự động được gọi sau khi response được gửi tới trình duyệt.

Hàm terminate sẽ nhận cả request và response. Khi bạn đã định nghĩa terminable middleware, bạ phải thêm nó vào trong danh sách global middleware trong HTTP kernel.

Khi gọi hàm terminate trong middleware, Laravel sẽ thực hiện giải quyết trường hợp mới cho middleware từ service container. Nếu bạn muốn sử dụng cùng một trường hợp khi mà hàm handle và hàm terminate được gọi, đăng ký middleware vào trong container sử dụng hàm singleton.

Nguồn: https://laravel.com/docs/5.2/middleware