如何在控制器传递的变量 (laravel) 中使用 blade 进行 foreach

How to foreach with blade in a controller passed variable (laravel)

我正在尝试 foreach 在 php 变量中 blade。我通过我的控制器将我的变量传递到我的视图,但是视图 return 我 Undefined variable。我想知道这样做的正确方法是什么。

我的控制器:

return view('pages.menu')->with([
    'someList' => $this->someList
]);

我的看法:

@foreach($someList as $item)
    @include('item.line', [
    'itemName' => $item->name,
    'itemValue' => $item->itemValue
])
@endforeach

编辑: 由于我无法删除,因为 OP 已经接受了答案,它现在只是基于文档的推测信息。根据来源,你所做的应该有效:

https://github.com/laravel/framework/blob/v5.5.28/src/Illuminate/View/View.php#L177-L186

感谢@patricus 指出这一点:

While the docs may not show that it is supported, you can pass an array in the with() method. If you do, it is array_merged into the current data set.


原答案:

根据文档,https://laravel.com/docs/5.5/views#passing-data-to-views

您可以将数据数组传递给视图:

return view('greetings', ['name' => 'Victoria']);

以这种方式传递信息时,数据应该是一个包含键/值对的数组。 在您的视图中,您可以使用相应的键访问每个值,例如 <?php echo $key; ?>

作为将完整数据数组传递给视图辅助函数的替代方法,您可以使用 with 方法将单独的数据 添加到视图:

return view('greeting')->with('name', 'Victoria');

所以根据文档,with可能不支持传递单个数组,所以你应该更改:

return view('pages.menu')->with([
    'someList' => $this->someList
]);

收件人:

return view('pages.menu')->with('someList', $this->someList);

或:

return view('pages.menu', [
    'someList' => $this->someList
]);