因此,假设我有一个单个项目的视图,在该视图中,我有一个在模型中打开的表单(使用组件)。为了使该模型组件出现,我需要该项目的实例。例如,
web.php
Route::get('/projects/{project}', 'ProjectController@show');
我的项目控制器
/* ProjectController show() method */
public function show(Project $project)
{
return view('projects.show', compact('project'));
}
在该项目的show blade模板中,我有以下组件将供应商添加到项目中。如您所见,我需要将项目实例传递给该组件。
@component('layouts.modals.add-project-vendor', ['project' => $project])
@endcomponent
我知道您可以使用视图编辑器将数据附加到组件,视图等。我在整个项目中使用视图作曲家,但我正在作曲家中收集数据。我希望能够做的只是使用该项目的实例,甚至不必将项目实际传递给组件。例如。
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
答案 0 :(得分:1)
Laravel的视图实现ArrayAccess
并允许通过它访问传递的变量。
在您的情况下,您可以使用:
$project = $view["project"];
这将访问传递给视图的名称为“project”的任何参数。
作为旁注,您可以使用$view->getData()
获取作为关联数组传递的所有变量,以备不时之需。