在 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 }}

的东西