假設管理後臺有一個欄位是
site_name
使用者可以隨意修改,前端頁面如何在所有檢視中引用它?總不能每次都查詢並向檢視傳參site_name
我們可以在 AppServiceProvider
分配檢視共享變數
// app/Providers/AppServiceProvider.php
class AppServiceProvider extends ServiceProvider
{
...
public function boot()
{
$site_name = "learnku";
view()->share('name', $site_name);
}
...
}
這樣就可以在所有的檢視中使用 site_name
變數了。類似 站點名稱
和 版權資訊
這類資料可以使用這種全域性定義,因為站點中所有頁面都會用到它們。
但是類似邊欄 推薦資源
這類資料,大部分頁面也會使用它們,但並不是所有頁面都會使用,如果使用全域性定義,就有些沒必要了。
我們可以把 邊欄 推薦資源
先定義成子檢視 sidebar.blade.php
,然後使用 view()->composer()
閉包方法向 sidebar
中傳遞資料,這樣每當呼叫 sidebar
這個檢視時,就會自動載入相關資料
class AppServiceProvider extends ServiceProvider
{
...
public function boot()
{
view()->composer('sidebar', function($view){
$view->with('recommoned', Recommoned::get());
});
}
...
}
本作品採用《CC 協議》,轉載必須註明作者和本文連結