將資料共享到所有檢視
有時你需要在許多檢視中設定相同的資料。
使用 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.*')。