簡體   English   中英

使用刀片中的@each將其他變量傳遞給partial

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

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