Laravel Blade模板读取数组title属性报ErrorException如何解决
问题原因
- 报错信息明确指出你在数组类型的
$post变量上使用了对象访问语法->,PHP不支持这种写法,因此触发报错。 - 你可以先确认业务逻辑预期传入的是数组还是对象,再选择对应方案修改即可。
解决方案
方案1:直接适配数组类型(无需修改控制器代码)
把所有$post->xxx的写法替换为数组访问语法$post['xxx'],修改后的代码如下:
@if($loop->even) <div>{{ $key }}.{{ $post['title'] }}</div> @else <div style="background-color: silver">{{ $key }}.{{ $post['title'] }}</div> @endif <div> <form action="{{ route('posts.destroy',['post' => $post['id']]) }}" method="POST" > @csrf @method('DELETE') <input type="submit" value="Delete !" > </form> </div>
方案2:修改控制器逻辑,传入对象类型(符合Laravel常规写法)
找到渲染该视图的控制器方法,检查你传递$post变量的代码:
- 如果你是从Eloquent模型查询数据,不要调用
toArray()方法把模型转成数组,直接把模型实例传递到视图即可 - 如果你是用查询构造器查询数据,也不要调用
toArray()做数组转换,默认返回的stdClass对象支持->语法访问属性
调试建议
你可以在视图最开头加一行{{ dd($post) }},打印查看$post的实际类型和结构,确认里面是否存在title、id字段,再做对应修改即可。
内容的提问来源于stack exchange,提问作者Akshay Band
相关产品推荐
相关产品推荐

