19

从文档中,只能将 4 个参数传递给@each. 我认为使用@include不会有帮助。代码如下

@each('partials.nav.categories', $groupCategories, 'parent')

我需要发送一个附加变量以在部分partials.nav.categories. 该变量不包含在$groupCategories数组中。

有什么方法可以发送这个额外的变量,还是我必须将它附加到partials.nav.categories数组中的每个项目?

谢谢

4

3 回答 3

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')
于 2016-01-11T07:38:16.253 回答
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视图中可用。

于 2016-01-05T20:41:10.853 回答
0

您只需将在每次使用部分时更改的变量传递给部分实例。

部分内部的代码本身可以访问父级范围内的任何内容。

因此,例如,如果主视图可以使用 $user,那么局部视图也可以使用 - 理解它在每个包含局部视图时都是相同的值。

不确定这是否有帮助,因为您没有说附加参数是否需要为每个包含的部分而不同。

于 2016-01-07T07:45:18.137 回答