Laravel视图中如何正确访问控制器传递的数组元素?
解决Laravel视图中数组访问报错的问题
嘿,这个问题我太熟悉了!你遇到的「Trying to get property of non-object」报错,主要有两个关键原因:
- 变量名缺失
$符号:Blade模板里访问变量必须以$开头,你写的information应该是$information; - 数组被当成对象访问:控制器里传递的
$information是关联数组,不是PHP对象,所以不能用->语法获取元素,得用数组索引的方式。
方案一:直接用数组索引访问(最简单)
修改你的index.blade.php代码,改成数组访问的形式,同时补上$:
number of clients: {{ $information['nroclients'] }} <br> number of services: {{ $information['nroservices'] }}
方案二:把数组转成对象再传递
如果你更习惯用->语法访问,可以在控制器里把数组转换成对象,再传递给视图:
public function index () { // 把数组强制转换成对象 $information = (object)[ 'nroclients' => '10', 'nroservices' => '20', 'nrousuers' => '30', 'nroordensservices' => '40', ]; return view ('dashboard.index', compact ('information')); }
或者转成Laravel集合(功能更丰富,支持更多链式操作):
public function index () { $information = collect([ 'nroclients' => '10', 'nroservices' => '20', 'nrousuers' => '30', 'nroordensservices' => '40', ]); return view ('dashboard.index', compact ('information')); }
这两种转换后,你原来的Blade代码(补上$后)就能正常运行了:
number of clients: {{ $information->nroclients }} <br> number of services: {{ $information->nroservices }}
内容的提问来源于stack exchange,提问作者Bruno Silva
相关产品推荐
相关产品推荐

