【问题标题】:parse array in laravel blade在 laravel 刀片中解析数组
【发布时间】:2016-06-24 18:36:48
【问题描述】:

我的视图页面由 {{$data->attachment}} 渲染

[{"filename":"hello.jpg", "location":"/home/my_folder"}].

这里我尝试使用

view 页面中显示文件名
@foreach($data->attachment as $attachment)
   $attachment->filename
@endforeach

这给了我

为 foreach() 提供的参数无效

我在尝试

{{$data->attachment->filename}}

这给了我

试图获取非对象的属性

我做错了什么?我怎样才能显示文件名?谢谢。

【问题讨论】:

  • 通过$attachment = $data->attachment->toArray() 尝试并传递此$attachment 变量以查看和迭代foreach 循环。
  • var_dump($data->attachment) 得到什么?
  • 问题[{"filename":"hello.jpg", "location":"/home/my_folder"}]中提到
  • 那不是 var_dump,我想说的是它是作为字符串回显还是对象
  • 仍然允许您在视图中使用此方法。实际上 foreach 需要数组或对象来迭代,但你有 JSON 数据。所以尝试如下可能会有所帮助: attachment()->toArray(); ?> 在你看来

标签: arrays laravel blade


【解决方案1】:

正如您在 cmets 中提到的,$data->attachment 的值实际上是一个字符串。为了在循环中对其进行迭代,您需要将其转换回数组。

因此,如果您将循环更改为:

@foreach(json_decode($data->attachment) as $attachment)
   {{ $attachment->filename }}
@endforeach

你应该得到你想要的。

我要补充一点,这种转换的正确位置应该在您的控制器中,而不是您的视图中。

您的问题并不完全清楚,所以这一切都假设您知道您在使用 foreach 循环时在做什么,这意味着您实际上在 $data->attachment array 中有多个条目。如果它只是一个附件,而你真的只是想获取文件名,那么你不需要循环,你只需要说:

{{ json_decode($data->attachment)->filename }}

我要再次补充一点,所有内容都属于您的控制器,因此在您看来,您最终会得到类似{{ $filename }}

【讨论】:

    猜你喜欢
    • 2020-11-02
    • 2020-03-14
    • 2016-04-19
    • 2016-12-29
    • 2016-09-27
    • 2021-02-14
    • 2018-05-02
    • 2022-11-02
    相关资源
    最近更新 更多