Laravel从MongoDB集合获取指定字段时出现htmlspecialchars错误
解决Laravel中MongoDB嵌套字段读取的htmlspecialchars错误
先来说说你遇到的问题:你在视图里写的{{$content[] = $value->Information }}这行代码是罪魁祸首。Blade模板里的{{ }}语法会自动调用htmlspecialchars()来转义输出内容,而你这里是把$value->Information这个对象/数组赋值给$content数组,同时还把赋值的结果(也就是这个嵌套对象)直接输出了——htmlspecialchars()只能处理字符串,遇到对象自然就报错了。
而且根本不需要额外定义$content数组来循环,因为你要的只是Information里的email字段,直接访问嵌套属性就可以了。
正确的视图代码
把你的视图代码改成这样:
@foreach ($data as $value) <h1>{{ $value->name }}</h1> <h2>{{ $value->Information->email }}</h2> @endforeach
为什么这样能解决问题?
根据你提供的存储代码,Information是一个嵌套对象(你存的时候用了数组转对象的写法),所以在Laravel读取MongoDB文档时,它会被解析成一个PHP对象,直接通过->就能访问里面的email属性,完全不需要额外的循环操作。
如果你的MongoDB驱动把嵌套结构解析成了数组(这种情况也可能出现),那你可以用数组下标访问:
<h2>{{ $value->Information['email'] }}</h2>
这样修改后,就只会输出字符串类型的name和email值,htmlspecialchars()就能正常处理,不会再报错了。
内容的提问来源于stack exchange,提问作者Amalendu Kar
相关产品推荐
相关产品推荐

