{{ $cqh }}
現在的要求是每個頁面都會用到這個變量,如何共享這個數據呢?一般這樣的操作我會在Laravel服務的boot方法里設置,下面介紹兩種共享數據的方法方法一:使用View:share方法,如CqhServiceProvider里
html' target='_blank'>public function boot() { View::share('cqh','chenqionghe'); }這是使用外觀模式,也可以直接使用view()方法,
view()->share('cqh', 'chenqionghe');方法二:使用composer方法單獨對這個navigation.blade.php進行傳送數據,方法如下
public function boot() { view()->composer('navigation', function ($view) { $view->with('cqh','chenqionghe'); }); }以上是使用閉包的形式來完成這個操作,其實這和路由一樣,也可以用類來代替,Laravel里叫組件,方法如下
public function boot() { View::composer('navigation', 'App/Http/ViewComposers/MyViewComposer'); }上面這樣就是注冊了視圖組件,并且在每次 navigation視圖渲染的時候,MyViewComposer@compose 都將會被執行。下面我們來看這個組件怎么定義
<?php namespace App/Http/ViewComposers;use Illuminate/Contracts/View/View;class MyViewComposer{ public function compose(View $view) { $view->with('cqh','chenqionghe'); }}在視圖被渲染之前,視圖組件的 compose 方法就會被調用,并且傳入一個 Illuminate/Contracts/View/View 實例。你可以使用 with 方法來把數據綁定到 view。注意:方法一和方法二其實是有區別的,方法一是對所有的視圖都傳遞的cqh數據,而方法二只是對navigation視圖傳遞了cqh數據如果方法二要達到方法一的效果,可以這樣
View::composer('*', function($view){ //});這樣就會對所有視圖進行傳遞了也可以針對多個視圖指定MyViewComposer組件
View::composer(['navigation', 'footer'], 'App/Http/ViewComposers/MyViewComposer');也可以使用 composers 方法來同時定義一群視圖組件
View::composers([ 'App/Http/ViewComposers/AdminComposer' => ['admin.index', 'admin.profile'], 'App/Http/ViewComposers/UserComposer' => 'user', 'App/Http/ViewComposers/ProductComposer' => 'product']);PHP編程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答