![](/img/trans.png)
[英]Laravel passing variable out of view partial to main blade, or between partials
[英]Passing additional variable to partial using @each in blade
從文檔中,只有4個參數可以傳遞給@each
。 我不認為使用@include
會有所幫助。 代碼如下
@each('partials.nav.categories', $groupCategories, 'parent')
我需要發送一個額外的變量,用於部分partials.nav.categories
。 此變量不包含在$groupCategories
數組中。
有沒有辦法發送這個額外的變量或我是否必須將它附加到partials.nav.categories
數組中的每個項目?
謝謝
您可以從控制器view()->share('key', 'value');
共享變量view()->share('key', 'value');
這個價值將在您的所有觀點中提供。
或者,您可以完全為此視圖創建視圖編輯器。
public function yourmethod()
{
view()->composer('partials.nav.categories', function($view) {
$view->with('var', 'value');
});
return view('path.to.view', ['groupCategories' => $categories]);
}
$var
僅在partials.nav.categories
視圖中可用。
我想你是對的。 將數據附加到$ groupCategories是正確的方法。 根據文檔,第四個參數是$ groupCategories為空時將顯示的內容。 您可以傳遞視圖模板,該模板僅顯示一次,或者使用raw |前面的任何文本 將按原樣顯示。
一般格式:
@each('viewfile-to-render', $data, 'variablename','optional-empty-viewfile')
第一個參數是要渲染的模板。 這通常是部分的,就像你的nameofyourblade.blade.php。
第二個是可迭代數據集,在您的情況下是$ groupCategories。
第三個是元素在迭代時將使用的變量名。 例如,在foreach($ data as $ element)中,此參數將是element(不帶$)。
第四個參數是可選的 - 它是模板文件的名稱,當第二個參數($ data)為空時應該呈現該模板文件的名稱,即沒有任何內容可以迭代。 如果我們將所有這些應用於我們的案例,我們可以替換整個塊:
@if (count($groupCategories) > 0)
<ul>
@foreach ($groupCategories as $parent)
@include('partials.nav.categories', $parent)
@endforeach
</ul>
@else
@include('partials.group-none')
@endif
同
@each('partials.nav.categories', $groupCategories, 'parent', 'partials.group-none')
您只需要傳遞給部分實例,即每次使用部分時更改的變量。
部分內部的代碼可以訪問父級范圍內的任何內容。
因此,例如,如果主視圖可以使用$ user,那么部分可以 - 在理解它將是每個包含部分的相同值。
不確定這是否有幫助,因為您沒有說每個包含部分的附加參數是否需要不同。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.