將資料共享到所有檢視

有時你需要在許多檢視中設定相同的資料。

使用 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.*')。