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