Filter là một bộ lọc, nó có chức năng lọc dữ liệu từ phía người dùng trước hoặc sau khi nó chạm tới Route. Do đó, nếu bạn tận sử dụng filter một cách thông minh thì website của bạn sẽ được an toàn hơn, điều này sẽ giúp bạn xử lý dữ liệu tối ưu hơn.
Filter trong Laravel sẽ cho phép bạn kiểm tra dữ liệu một cách độc lập sau đó lồng ghép một cách khéo léo vào route mà bạn mong muốn. Thì ngay khi request tới với route sẽ bị lọc bởi filter và xử lý. Nếu hợp lệ thì mới tiếp tục đi tới route còn nếu không thì sẽ thực thi một yêu cầu do bạn đặt ra.
Để thiết lập filter ta vào file filters.php và tạo filter với nội dung :
Route::filter('tên_filter',hàm_xử_lý);Ví dụ: Kiểm tra thời gian hiện tại là buổi sáng hay buổi chiều ta có
Route::filter('check_time',function($route,$request){Ta có hàm date(‘A’) sẽ trả về AM hoặc PM tùy theo thời gian của hệ thống. Ta sử dụng filter để lọc nếu thời gian là buổi sáng (AM) thì sẽ trả về ngay giá trị “Buổi sáng!” mà không đưa yêu cầu tới route.
if(date('A') == "AM"){
return "Buổi sáng!";
}
});
Bây giờ ta tiến hành filter vào route
Mở file routes.php thêm vào cú pháp sau:
Route::get("thoigian/checktime",array("as"=>"checktime","before"=>"check_time","uses"=>"ThoigianController@showtime"));Bạn thấy đấy, trong mảng đối số truyền vào, tôi thiết lập filter với khóa before chỉ tới check_time. Sau đó đẩy nó sang controller thoigian với action là showtime.
Tạo tiếp file ThoigianController.php với nội dung sau:
<?phpTruy cập tới địa chỉ: localhost/laravel/public/thoigian/showtime.
class ThoigianController extends BaseController{
public function showtime(){
return "Buổi chiều!";
}
}
Lưu ý: Filter chia ra 2 loại là before và after.
- Before: Nghĩa là request trước khi tới routing
- After: Nghĩa là request sau khi tới routing.
Tuy nhiên, trong thực tế khi lập trình PHP, người ta thường sử dụng before là chính, còn after chỉ sử dụng thực hiện các công đoạn dọn dẹp. Ví dụ như hủy biến, hủy phiên làm việc,….
Truyền giá trị vào Filter
Để truyền giá trị vào filter ta sử dụng cú pháp
tên_Filter:giá trị
Ta có thể tùy chỉnh lại ví dụ ở trên như sau:
Route::filter('check_time',function($route,$request,$param){Lưu ý: chúng ta có thêm một tham số $param trong function. Và $param này chính là giá trị chúng ta truyền từ quá trình thiết lập ở Route.
if(date('A') == "AM"){
return "Buổi sáng!";
}
});
Giờ sửa lại phần routes.php như sau:
Route::get("thoigian/checktime",array("as"=>"checktime","before"=>"check_time:PM","uses"=>"ThoigianController@showtime"));Và truy cập lại đường dẫn : localhost/laravel/public/thoigian/showtime để xem kết quả.
Nguồn: the gioi web
0 nhận xét:
Lưu ý: Chỉ thành viên của blog này mới được đăng nhận xét.