[英]Laravel 5.4 - Use the model instantiated from Controller in a View Composer
因此,可以說我有一個項目的視圖,在該視圖中,我有一個在模型中打開的表單(使用組件)。 為了使該模型組件甚至出現,我需要該項目的實例。 所以舉個例子
web.php
的路由
Route::get('/projects/{project}', 'ProjectController@show');
我的項目負責人
/* ProjectController show() method */
public function show(Project $project)
{
return view('projects.show', compact('project'));
}
在該項目的展示刀片模板中,我具有以下組件,可將供應商添加到項目中。 如您所見,我需要將項目實例傳遞給該組件。
@component('layouts.modals.add-project-vendor', ['project' => $project])
@endcomponent
我知道您可以使用視圖編輯器將數據附加到組件,視圖等。 我在整個項目中都使用了View Composer,但是我正在Composer中收集數據。 我想要做的就是僅使用該項目的實例,甚至不必實際將項目傳遞給組件。 例如。
View::composer(
['layouts.modals.add-project-vendor'],
function($view){
/*
* Somehow get that instance of the project
* that is already instantiated on the show page. And
* send it to the component.
*/
$project = ;
$view->with(compact('project'));
}
);
因此,所需的結果將只能在單個項目視圖上調用以下內容,並使每次實例化的類都傳遞到此組件中。 例如:
@component('layouts.modals.add-project-vendor')
@endcomponent
Laravel的視圖實現了ArrayAccess
並允許通過它訪問傳遞的變量。
您可以使用:
$project = $view["project"];
這將訪問傳遞給視圖的任何名稱為“ project”的參數。
作為旁注,您可以使用$view->getData()
獲取所有需要作為關聯數組傳遞的變量,以備$view->getData()
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.