[Intermediate Laravel] 12-How-to-Write-Custom-Blade-Directives

來源:互聯網
上載者:User

常用 Blade 文法

在 Blade 模版頁面,我們常用 @section 命令定義一個內容區塊,用 @yield 命令顯示指定區塊的內容等等,後續我們探討如何寫定製的 Blade命令。

定製個性 Blade

修改 welcome.blade.php 頁面:

            Laravel                @hello     

修改 AppServiceProvider.php,新增自訂的 hello 指令:

class AppServiceProvider extends ServiceProvider{  /**   * Bootstrap any application services.   *   * @return void   */  public function boot()  {    // 新增 hello blade    Blade::directive('hello', function(){      return 'hello word';    });  }   /**   * Register any application services.   *   * @return void   */  public function register()  {    //  }} 

這時我們訪問首頁面效果如:

修改 AppServiceProvider.php 中代碼如下:

  public function boot()  {    // 新增 hello blade    Blade::directive('hello', function(){//      return 'hello word1';      return '';    });  } 

訪問結果卻並沒有變化,這是因為 Laravel 的頁面緩衝。運行 php artisan view:clear 清理緩衝後再次訪問,效果如:

Blade 中參數處理

修改 welcome.blade.php 頁面:

            Laravel                @hello('world')     

修改 AppServiceProvider.php 中 boot 方法,接受傳入 $expression 參數:

  public function boot()  {    // 新增 hello blade    Blade::directive('hello', function($expression){      return "";    });  } 

這時我們訪問首頁面效果如:

實際訪問路徑為:/storage/framework/views/下的快取檔案。

Blade 中 對象傳遞

修改 route.php 頁面,傳遞 user 變數:

Route::get('/', function(){  return view('welcome')->with('user', App\User::first());}); 

修改 welcome.blade.php 頁面,接受 $user :

            Laravel                @ago($user)     

修改 AppServiceProvider.php ,處理 $user :

  public function boot()  {    // 新增 hello blade    Blade::directive('ago', function($expression){      dd($expression);    });  } 

這時我們訪問首頁面效果如:

Blade 中 with 輔助函數

如何讓對象正常顯示呢,這裡我們藉助 with 輔助函數:

  public function boot()  {    // 新增 hello blade    Blade::directive('ago', function($expression){      return "updated_at->diffForHumans(); ?>";     });  } 

訪問效果如:

  • 相關文章

    聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.