LARAVEL TUTORIALS
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Một cách quản lý filter trong Laravel

Filter là một thành phần tuyệt vời mà laravel cung cấp cho chúng ta, nó giúp quản lý website một cách thuận tiện và "chuẩn men" hơn. Nhưng có một vấn đề là ở laravel toàn bộ filter mặc định được đặt ở file app/filters.php và bạn hãy tưởng tượng đến khi web bạn có cả chục cái filter hay thậm chí cả trăm filter thì quản lý nó sẽ khó như thế nào. Đương nhiên bạn cũng có thể quản lý bằng cách comment một cách hợp lý trong file, và đó cũng là cách mình từng làm.

1. Cách viết filter dễ quản lý trong Laravel

Câu hỏi đặt ra là: "Có còn cách nào khác để quản lý filter không? có cách nào tách riêng biệt filter ra ngoài file không?". Câu trả lời là có, và trong bài này mình sẽ hướng dẫn cách làm.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Trong bài này mình sẽ lấy ví dụ về tạo filter về user.

Trước hết bạn tạo thư mục app/Projects/Filters/Users và class FilterServiceProvider ở thư mục app/Projects/Filters/ với nội dung như sau:

<?php
namespace Projects\Providers\Filters;

use Illuminate\Support\ServiceProvider;

class FilterServiceProvider extends ServiceProvider {

	public function register(){
		$this->registerFilters();
	}

	public function registerUserFilters(){

	}
}

trong đó action register là bắt buộc phải có, registerUserFilters là action mẫu mình tạo ra để gọi tới các class filter mà sắp tạo. bạn có thể tạo các action khác nhau để gọi nó trong action register, chẳng hạn tạo action registerProductFilters và gọi nó trong action register.

Bạn mở file composer.json và thêm vào psr-4 của autoload: "Projects\\Filters\\" : "app/Projects/Filters",

tuy chinh filter trong laravel jpg

Sau đó bạn thêm vào cuối phần providers trong file app/config/app.php nội dung sau: 'Projects\Filters\FilterServiceProvider',
Như vậy là đã xong việc autoload rồi, bây giờ mình lấy việc bạn thêm filter kiểm tra quyền upload file cho user nhé.

Bạn tạo class CanUploadFilter trong thư mục app/Projects/Filters/Users và đương nhiên tên file trùng tên class (wink) với nội dung sau:

<?php
namespace Projects\Filters\Users;

class CanUpload {

	public function filter(){
		//code xử lý
	}
}

Trong đó action filter là bắt buộc.

Bây giờ quay lại action registerUserFilters của class FilterServiceProvider thêm vào đoạn code sau:

$this->app->router->filter('user.can.upload','Projects\Filters\Users\CanUpload');

Trong đó user.can.upload là filter name mà bạn sẽ sử dụng nó về sau, Projects\Filters\Users\CanUpload là gọi tới class CanUpload mà chúng ta đã tạo.

Và tương tự với các nhóm filter khác, bạn hãy tạo chúng thành nhóm riêng biệt với nhau, mình nghĩ sẽ mạch lạc và dễ quản lý hơn nhiều.

Kết Luận

Mỗi người mỗi một cách viết, một cách trình bày và quản lý khác nhau nên mình không chắc cách mình làm là đúng và tối ưu. Vậy nên mình viết bài này mục đích thảo luân và học hỏi, nếu bạn có cách nào hay thì hãy chia sẻ cho mình và mọi người cùng học nhé.

Cùng chuyên mục:

Bài 1: Laravel là gì? hướng dẫn cài đặt laravel bằng Composer

Bài 1: Laravel là gì? hướng dẫn cài đặt laravel bằng Composer

Bài 04: Tìm hiểu cấu trúc của Laravel 5.x

Bài 04: Tìm hiểu cấu trúc của Laravel 5.x

Và trong bài này, chúng ta sẽ tìm hiểu cấu trúc của Laravel để có…

Bài 03: Hướng dẫn cài đặt Laravel 5.x

Bài 03: Hướng dẫn cài đặt Laravel 5.x

Để bắt đầu series tự học Laravel 5x thì công việc đầu tiên là bạn…

Bài 02: Hướng dẫn sử dụng Composer PHP

Bài 02: Hướng dẫn sử dụng Composer PHP

Composer là một công cụ tuyệt vời cho tín đồ PHP và trong bài này,…

Bài 11: Sử dụng Query Builder (Model) trong laravel

Bài 11: Sử dụng Query Builder (Model) trong laravel

Model trong mô mình MVC dùng để tương tác với cơ sở dữ liệu và…

Bài 10: Sử dụng Blade template engine trong Laravel

Bài 10: Sử dụng Blade template engine trong Laravel

Template engine có tác dụng giúp sạch đi những đoạn code PHP nằm trong View…

Bài 4: Sử dụng View trong laravel

Bài 4: Sử dụng View trong laravel

Trong bài này chúng ta sẽ tìm hiểu đến View, một thành phần khá quan…

Bài 3: Sử dụng Controller trong laravel

Bài 3: Sử dụng Controller trong laravel

Sau khi route nhận được request thì sẽ chuyển hướng request đến cho controller và…

Bài 07: Sử dụng Route::filter và Route::group trong laravel

Bài 07: Sử dụng Route::filter và Route::group trong laravel

Giới thiệu về 2 loại route rất quan trọng trong việc xử lý logic và…

Bài 06: Sử dụng Route::controller và Route::resource trong laravel

Bài 06: Sử dụng Route::controller và Route::resource trong laravel

Ở bài trước mình có giới thiệu tổng quan về rout trong Laravel và việc…

Bài 02: Tổng quan về route trong laravel

Bài 02: Tổng quan về route trong laravel

Trong khuôn khổ bài viết này, mình sẽ giới thiệu đến bạn route trong laravel…

Bài 04: Những công cụ tốt nhất hỗ trợ học laravel

Bài 04: Những công cụ tốt nhất hỗ trợ học laravel

Trước hết, ai khi học php đều chọn cho mình 1 IDE hoặc text editor…

Bài 02: Cấu trúc thư mục cơ bản của Laravel

Bài 02: Cấu trúc thư mục cơ bản của Laravel

Bất kì một Framework nào cũng đưa ra một mô hình các cấu trúc thư…

Bài 03: Cài đặt Openserver và tạo domain ảo trên localhost

Bài 03: Cài đặt Openserver và tạo domain ảo trên localhost

Trong bài 3 này mình sẽ giới thiệu các bạn cách tạo tên miền ảo…

Bài 01: Composer là gì?

Bài 01: Composer là gì?

Composer là một công cụ quản lý các thư viện trong PHP (Dependency Management), công…

Sử dụng Event trong Laravel

Sử dụng Event trong Laravel

Trong bài này mình sẽ giới thiệu event, cách tạo event và bắt event trong…

Bài 01: Laravel là gì? Hướng dẫn cài đặt laravel trên windows

Bài 01: Laravel là gì? Hướng dẫn cài đặt laravel trên windows

Trong chuỗi bài viết này mình sẽ viết về laravel 4.2.* trong môi trường windows,…

Top