単一のプロジェクトのビューがあり、そのビューにモデルで開くフォーム(コンポーネントを使用)があるとしましょう。そのモデルコンポーネントを表示するには、そのプロジェクトのインスタンスが必要です。だから、そのプロジェクトのための私のショーブレードテンプレートでweb.php
Laravel 5.4 - View ComposerでControllerからインスタンス化されたモデルを使用する
Route::get('/projects/{project}', '[email protected]');
マイプロジェクトコントローラー
/* 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(
['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'));
}
);
ので、望ましい結果が1つだけのプロジェクトビューで次のように呼び出してインスタンス化されるクラスは、このコンポーネントにそれが呼び出されるたびに合格したことを持っていることができるでしょう。たとえば、ちょうど:
@component('layouts.modals.add-project-vendor')
@endcomponent
'$ project = $ view [" project "];' ...おそらく – apokryfos
@apokryfos ding ding ding!シンプルで素晴らしい作品です! TYSM!これを回答として追加してください。 –