为了账号安全,请及时绑定邮箱和手机立即绑定

laravel5如何向 blade 模板传递多维数组?

laravel5如何向 blade 模板传递多维数组?

慕盖茨4494581 2019-04-13 08:37:11
在controller中使用view()方法向blade模板传递数组时出错。具体如下:$data['first']=array(array('lily','lucy'));returnview('result',$data)在blade模板的代码:@foreach($firstas$value)...@endforeach出错信息如下:ErrorExceptioninhelpers.phpline454:htmlentities()expectsparameter1tobestring,arraygiven(View:/home/wwwroot/laravel/resources/views/result.blade.php)如果$data['last']=array('lily','lucy');returnview('result',$last)blade模板的$last就可以正常接收到数据。难道laravel中并没传递多维数组的方法?还是我代码写的不对吗?我看了文档,表述如下:如果你想的话,还有一种方式就是直接在view辅助方法的第二个参数直接传递一个数组:$view=view('greetings',$data);如果你使用上面的方法来进行数据传参,$data必须是键/值对应的数组数据,这样在视图里面,你可以使用对应的键来获取值,如:{{$key}}会取得$data['$key']对应的数据.这并没有说到多维数组的情况。
查看完整描述

2 回答

?
小唯快跑啊

TA贡献1863条经验 获得超2个赞

首先很高兴,又有Laravel的问题。
然后说说我的想法:
其实报错信息是这样的:它并没有说你的多维数组没有传递过去,这个多维数组实际上已经传给result.blade.php了,只是你在foreach循环的时候可能出错了:
你可能是写成类似这样:
```
@foreach($firstas$value)
{{$value}}
@endforeach
```
其实应该是这样的:
```
@foreach($firstas$value)
{{$value[0]}}
@endforeach
```
因为这里的$value其实就是一个数组,而blade引擎解析{{}}的时候是不能直接输出数组的,blade希望{{}}这个里面是字符串。
所以问题不是你没有传过去,而是传过去了你没有正确输出,你可以试试这样调试一下:
```
@foreach($firstas$value)
{{dump($value)}}
@endforeach
```
HappyHacking
                            
查看完整回答
反对 回复 2019-04-13
?
蓝山帝景

TA贡献1843条经验 获得超7个赞

是我弄错了。可以传,需要写with('last',$data),即专门指定last,自动识别的话,blade可以识别$data['first'],但后面的数组就不行了。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 500 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号