要構建一個包含大量動態數據的邊欄,我學習了Laravel中的視圖作曲家。問題在於View Composer在視圖加載時觸發,並將控制器中的任何數據覆蓋爲具有相同名稱的變量。根據Laravel 5.4的文檔,我通過視圖創作者實現了我想要的功能:如何在Laravel中使控制器數據覆蓋視圖控制器?
查看創建者與查看作曲者非常相似;然而,在視圖實例化之後立即執行 ,而不是等待 ,直到視圖即將呈現。要註冊視圖創建,使用 創作者方法:
據我所知,這意味着如果我加載與控制器和創作者的同名變量,控制器應覆蓋它。然而,這並沒有發生在我的代碼中。視圖作曲家:
public function boot()
{
view()->creator('*', function ($view) {
$userCompanies = auth()->user()->company()->get();
$currentCompany = auth()->user()->getCurrentCompany();
$view->with(compact('userCompanies', 'currentCompany'));
});
}
這裏是控制器中的一個,例如:
public function name()
{
$currentCompany = (object) ['name' => 'creating', 'id' => '0', 'account_balance' => 'N/A'];
return view('companies.name', compact('currentCompany'));
}
所討論的$ currentCompany可變的,例如,總是保留來自創建者的值,而不是被覆蓋來自控制器的人。任何想法這裏有什麼錯誤?