如何在控制器传递变量(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_merge
d 放入当前数据集。 Source.
@patricus 你的权利,在顶部添加了一条注释,因为我无法删除它。一旦 OP 删除接受,就会这样做。
@MathieuAuclair 是否通过更改代码解决了问题,如果没有,请取消接受,以便我删除我的答案。以上是关于如何在控制器传递变量(laravel)中使用刀片进行 foreach的主要内容,如果未能解决你的问题,请参考以下文章
在 laravel 刀片路由中使用 JavaScript 变量
我可以将刀片变量传递给 Laravel 中的 php 变量吗?
如何从 Laravel5 中的刀片模板传递扩展主模板中的变量?