Tạo function dùng chung bằng Helpers trên Laravel 5

Có những function sẽ được bạn dùng đi dùng lại ở nhiều nơi (Controller, Model, Request, Service, View ...). Khi bạn dùng chức năng đó ở đâu bạn có thể viết lại function đó, tuy nhiên bạn sẽ gặp vấn đề khi có sự thay đổi trong function đó bạn sẽ phải tìm kiếm và sửa nhiều lần. Giải pháp đưa ra là bạn tạo ra một helper function được tự động load và có thể gọi ở bất cứ nơi nào.

Trong ví dụ này tôi sẽ tạo ra function dùng để tính tổng 2 số.
Các bước làm như sau:
- Trong thư mục app tạo mới thư mục Helpers
- Trong thư mục Helpers vừa tạo, tạo mới file SumNumber.php (Bạn có thể tùy ý tên), nội dung file của tôi:
<?php namespace App\Helpers;
class SumNumber{
   public static function sumTwoNumber($number1 = 0, $number1 = 0 )    {           $sum = $number1 + $number2;           return  $sum;    }}

- Trong thư mục app/Providers tạo file mới có tên : HelperServiceProvider.php với nội dung:
<?php namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class HelperServiceProvider extends ServiceProvider {
  /**    * Bootstrap the application services.    *    * @return void    */   public function boot()   {      //   }
  /**    * Register the application services.    *    * @return void    */   public function register()   {        foreach (glob(app_path().'/Helpers/*.php') as $filename){            require_once($filename);        }   }}

- Khai báo Service Provider trong config/app.php :
  • Trong providers array thêm :
'App\Providers\HelperServiceProvider',
  • Trong aliases array thêm:
'SumNumber' => 'App\Helpers\SumNumber,

Tới đây chúng ta đã hoàn thành bước tạo một helper, để có thể gọi và sử dụng function đã tạo trong helper ta thực hiện đơn giản như sau:

- Trên View gọi Helper theo dạng sau:
Alias::static_function_name(param1, param2... param n)
Ví dụ:
<div><a href="{{ URL::route('article_show', [$article->id]) }}" title="{{ $article->title }}">{{ Text::shorten($article->title, 75) }}</a>Sum is: {{ SumNumber::sumTwoNumber( 10, 90) }}</div>

- Trên Controller, Service, Request …

use App\Helpers\SumNumber;

Sau đó ở bất kỳ hàm nào bạn muốn sử dụng helper có thể gọi như sau :

SumNumber::sumTwoNumber( 10, 90) ;

0 Nhận xét:

Đăng nhận xét

Rất mong các ý kiến của các bạn khi đọc bài viết này !