將資料共享到所有檢視
有時你需要在許多檢視中設定相同的資料。
使用 View::share
// "View" is the View Facade
View::share('shareddata', $data);
在此之後,$data
的內容將在所有檢視中以 $shareddata
的名稱提供。
View::share
通常在服務提供者中呼叫,或者可能在控制器的建構函式中呼叫,因此資料將僅在該控制器返回的檢視中共享。
使用 View::composer
檢視組合器是在呈現檢視時呼叫的回撥或類方法。如果每次呈現檢視時都希望將資料繫結到檢視,則檢視編輯器可以幫助你將該邏輯組織到一個位置。你可以直接將變數繫結到特定檢視或所有檢視。
基於閉包的作曲家
use Illuminate\Support\Facades\View;
// ...
View::composer('*', function ($view) {
$view->with('somedata', $data);
});
基於類的作曲家
use Illuminate\Support\Facades\View;
// ...
View::composer('*', 'App\Http\ViewComposers\SomeComposer');
與 View::share
一樣,最好在服務提供商中註冊作曲家。
如果使用作曲家類方法,那麼你將使用 App/Http/ViewComposers/SomeComposer.php
:
use Illuminate\Contracts\View\View;
class SomeComposer
{
public function compose(View $view)
{
$view->with('somedata', $data);
}
}
這些例子在作曲家註冊中使用'*'
。此引數是一個字串,與要註冊作曲家的檢視名稱相匹配(*
是萬用字元)。你還可以選擇子資料夾下的一組路徑的單個檢視(例如'home'
)(例如'users.*'
)。