Laravel 5: Custom helper function
Hi các bạn,
Về helper function, Laravel đã có sẵn cho chúng ta 1 mớ, vd những cái ta hay sử dụng: env, redirect, route, asset,…
Tham khảo toàn bộ Helper Functions đã có sẵn: https://laravel.com/docs/5.5/helpers
Nhưng vì 1 lý do nào đó, bạn cũng sẽ cần tạo ra 1 helper function riêng cho mình.
Vậy để làm điều đó ra sao? Chúng ta cùng tìm hiểu nhé 😀
1/ Ví dụ thực tế
Ví dụ, mình có 1 cái hàm để encrypt id. Và function này sẽ được sử dụng rộng rãi trong controller/model mà mình muốn.
Để tránh DRY và Dup code, sẽ có 1 cách duy nhất là mình tạo ra 1 file chứa các hàm chung chung nhất mà có khả năng sử dụng lại cao vào chung.
Vậy nên từ tình huống trên, ta sẽ viết ra custom helper function để sử dụng.
Custom helper function khi được viết ra, ta có thể sử dụng tốt cả 2 nơi là: Controller và View, thậm chí trong Model.
2/ Tiến hành khởi tạo file .php để chứa các helper function
Bước 1: Tạo file php
Các bạn sẽ tạo file .php (tên bất kì) vào trong thư mục app.
Còn mình để dễ quản lý, mình sẽ tạo 1 thư mục trong app có tên là Supporters, tạo file có tên là Common.php
Vậy đường dẫn tới file của mình sẽ là: app/Supporters/Common.php
Bước 2: Khai báo
Và để khai báo, các bạn phải có đường dẫn tới file như mình đã bôi đen ở trên.
Ta sẽ ra thư mục root, mở file composer.json lên:
Các bạn sẽ thấy nhánh autoload như sau:
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
}
},
Ta sẽ thêm 1 thằng con cho nó như sau:
"files": [
"app/Supporters/Common.php"
]
Thằng con của nó sẽ chứa 1 mảng string tên files, từng phần tử mảng đó sẽ là đường dẫn tới file .php của các bạn.
Tổng quan lại thì autoload giờ như sau:
"autoload": {
"classmap": [
"database/seeds",
"database/factories"
],
"psr-4": {
"App\\": "app/"
},
"files": [
"app/Supporter/Common.php"
]
},
Bước 3: Chạy composer để update
Ta sẽ chạy lệnh này để composer update:
composer dump-autoload
Sau khi chạy xong, các bạn đã có thể viết hàm trong file đã tạo và sử dụng ở cả 2 bên controller/view mà không cần phải use gì cả.
Note:
Đối với các bạn dựng 1 class riêng thì quy trình làm vẫn như trên, nhưng trong file .php các bạn phải định nghĩa namespace, vd:
namespace App\Supporters
Và để xài được ở Controller, ta sẽ phải use, như sau (vd mình tạo class là Helper):
use App\Supporters\Helper
Vậy thì trong controller, ta đã có thể khởi tạo Helper hoặc xài những hàm static của Helper (vd Helper::find($x))
Và nếu ta muốn xài ở views, bạn cần thêm như sau tại config/app.php tại aliases(gần cuối):
'aliases' => [
...
...
'Helper' => App\Supporters\Helper::class,
]
Thêm xong, bên views ta đã có thể sử dụng class này, ưu tiên dựng các hàm static để truy xuất dễ dàng nhất, đỡ phải khởi tạo.
Vd: {{Helper::Status($info->status)}}
3/ Lời kết về Laravel 5: Custom helper function
Đôi khi, ta sẽ cần sử dụng tới thằng này, không ít cũng nhiều (mình cũng sử dụng :D), vậy nên biết thêm chút vẫn hay hơn.
Và để trải nghiệm điều này tốt nhất, các bạn nên sử dụng PHPStorm.
Bài viết về “Laravel 5: Custom helper function” của mình tới đây kết thúc.
Cám ơn các bạn đã quan tâm theo dõi 😀