在 laravel blade 中解析数组
parse array in laravel blade
我的视图页面由 {{$data->attachment}}
组成,呈现
[{"filename":"hello.jpg", "location":"/home/my_folder"}]
.
这里我尝试使用
在 view
页面中显示文件名
@foreach($data->attachment as $attachment)
$attachment->filename
@endforeach
这给了我
Invalid argument supplied for foreach()
我在努力
{{$data->attachment->filename}}
这给了我
Trying to get property of non-object
我做错了什么?我怎样才能显示文件名?谢谢。
正如你在评论中提到的,$data->attachment
的值实际上是一个字符串。为了在循环中对其进行迭代,您需要将其转换回数组。
因此,如果您将循环更改为:
@foreach(json_decode($data->attachment) as $attachment)
{{ $attachment->filename }}
@endforeach
你应该得到你想要的。
我要补充一点,这个转换的正确位置应该在你的控制器中,而不是你的视图中。
您的问题并不完全清楚,所以这一切都假设您在使用 foreach 循环时知道自己在做什么,这意味着您实际上在 $data->attachment array
中有多个条目。如果它只是一个附件而你真的只是想获取文件名,那么你不需要循环,你只需要说:
{{ json_decode($data->attachment)->filename }}
我要再次补充一点,所有这些都属于你的控制器,这样在你看来你最终会得到类似 {{ $filename }}
的东西
我的视图页面由 {{$data->attachment}}
组成,呈现
[{"filename":"hello.jpg", "location":"/home/my_folder"}]
.
这里我尝试使用
在view
页面中显示文件名
@foreach($data->attachment as $attachment)
$attachment->filename
@endforeach
这给了我
Invalid argument supplied for foreach()
我在努力
{{$data->attachment->filename}}
这给了我
Trying to get property of non-object
我做错了什么?我怎样才能显示文件名?谢谢。
正如你在评论中提到的,$data->attachment
的值实际上是一个字符串。为了在循环中对其进行迭代,您需要将其转换回数组。
因此,如果您将循环更改为:
@foreach(json_decode($data->attachment) as $attachment)
{{ $attachment->filename }}
@endforeach
你应该得到你想要的。
我要补充一点,这个转换的正确位置应该在你的控制器中,而不是你的视图中。
您的问题并不完全清楚,所以这一切都假设您在使用 foreach 循环时知道自己在做什么,这意味着您实际上在 $data->attachment array
中有多个条目。如果它只是一个附件而你真的只是想获取文件名,那么你不需要循环,你只需要说:
{{ json_decode($data->attachment)->filename }}
我要再次补充一点,所有这些都属于你的控制器,这样在你看来你最终会得到类似 {{ $filename }}