簡體   English   中英

Laravel 5.4-在View Composer中使用從Controller實例化的模型

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM