layout中使用到的變量,如果從控制器傳參,需要每個視圖都重複操作!
如何解決一次運算後,將結果傳遞給layout中,供所有檢視使用(不想在layout檢視中出現業務代碼)。
eg:
1. 權限管理,依照不同的用戶,設定不同的選單!
2. 選單中的動態數字,例如 【當日訂單(50)】,那個50需要所有的控制器取得資料後,再傳遞給視圖!
迷茫2017-05-16 16:58:01
有兩種方法可以解決:
第一:傳統的ViewComposerProvider
class NavViewComposerProvider extends ServiceProvider {
public function boot(){
view()->composer('partials.nav', function ($view) {
$view->with('userAtLayout', User::find(Auth::user()->id));
//根据自己的需求改呗
});
}
}
第二,Laravel 5.1新特性@inject:
@inject('var','Class')
// var 变量名 Class绑定的类名
例如你可以這樣:
@inject('nav','App\SiteNav')
在SiteNav中查詢資料就可以了。
題外話:認真看文檔,可以解決你越到的80%的問題。
Happy Hacking