常用 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(); ?>"; }); }
訪問效果如: