繁体   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