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

Posted

技术标签:

【中文标题】如何在控制器传递变量(laravel)中使用刀片进行 foreach【英文标题】:How to foreach with blade in a controller passed variable (laravel) 【发布时间】:2018-06-23 04:01:19 【问题描述】:

我正在尝试使用刀片在 php 变量中进行 foreach。我通过我的控制器将变量传递给我的视图,但视图返回给我Undefined variable。我想知道这样做的正确方法是什么。

我的控制器:

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

我的观点:

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

【问题讨论】:

它说哪个变量未定义? $someList @LawrenceCherone 试试:view('pages.menu')->with('someList', $this->someList)view('pages.menu', [ 'someList' => $this->someList ]) return view('pages.menu')->with('someList' => $this->someList); 【参考方案1】:

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

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

感谢@patricus 指出这一点:

虽然文档可能未显示它受支持,但您可以通过 with() 方法中的数组。如果你这样做,它是 array_merged 到 当前数据集。


原答案:

来自文档,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
]);

【讨论】:

虽然文档可能未显示它受支持,但您可以在 with() 方法中传递一个数组。如果这样做,则将array_merged 放入当前数据集。 Source. @patricus 你的权利,在顶部添加了一条注释,因为我无法删除它。一旦 OP 删除接受,就会这样做。 @MathieuAuclair 是否通过更改代码解决了问题,如果没有,请取消接受,以便我删除我的答案。

以上是关于如何在控制器传递变量(laravel)中使用刀片进行 foreach的主要内容,如果未能解决你的问题,请参考以下文章

在 laravel 刀片路由中使用 JavaScript 变量

我可以将刀片变量传递给 Laravel 中的 php 变量吗?

如何从 Laravel5 中的刀片模板传递扩展主模板中的变量?

laravel刀片视图中的变量未定义错误

在 laravel 中使用 ajax 从控制器刀片文件中传递搜索数据时遇到问题

laravel 将数据从刀片文件传递到控制器