从文档中,只有4个参数可以传递给@each
。我不认为使用@include
会有所帮助。代码如下
@each('partials.nav.categories', $groupCategories, 'parent')
我需要发送一个额外的变量,以便在部分partials.nav.categories
中使用。此变量不包含在$groupCategories
数组中。
有没有办法发送这个额外的变量,或者我是否必须将它附加到partials.nav.categories
数组中的每个项目?
谢谢
答案 0 :(得分:1)
您可以从控制器共享变量
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
视图中可用。
答案 1 :(得分:1)
我认为你是对的。将数据附加到$ 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')
答案 2 :(得分:0)
您只需要传递给部分实例,即每次使用部分时更改的变量。
部分内部的代码可以访问父级范围内的任何内容。
因此,例如,如果主视图可以使用$ user,那么也可以部分 - 在理解它将是每个包含部分的相同值。
不确定这是否有帮助,因为您不会说每个包含部分的附加参数是否需要不同。