【问题标题】:How to display JSON Array in Blade view?如何在 Blade 视图中显示 JSON 数组?
【发布时间】:2017-05-22 06:22:10
【问题描述】:

My db table structure

我正在使用视图编辑器从该表中获取数据并将其发送回我的视图

class NavComposer
{

 public function compose(View $view)
    {
        if (Auth::check()) {
            $view->with('unread_notifications', DB::table('notifications')->where([
                                            ['read_at', '=', NULL],
                                            ['notifiable_id', '=', Auth::user()->id],
                                            ])->get());
        }
    }
}

我的看法:

@foreach($unread_notifications as $notification)
{{ $notification->data }}
@endforeach

我得到了什么:

{"id":79,"sender":"Diana","receiver":"Alex","subject":"Subject","body":"Lorem ipsum"}

我要显示的内容:

ID: 79
Subject: Subject
Body: Lorem Ipsum

如果这是我对 JSON 不太了解的非常简单的东西,我提前道歉

【问题讨论】:

    标签: json laravel laravel-5


    【解决方案1】:
    @foreach($unread_notifications as $notification)
       @foreach(json_decode($notification->data, true) as $d)
          <div>ID: {{ $d['id'] }}</div>
          <div>Subject: {{ $d['subject'] }}</div>
          <div>Body: {{ $d['body'] }}</div>
       @endforeach
    @endforeach
    

    【讨论】:

    • 不起作用,我收到错误:尝试获取非对象的属性
    • @rmdy,答案已修改。
    【解决方案2】:

    您需要解码 JSON。您可以手动执行此操作:

    @foreach($unread_notifications as $notification)
        <?php $notificationData = json_decode($notification->data, true); ?>
        {{ $notificationData['sender'] }}
    @endforeach
    

    或者你可以create accessor 这样 Laravel 可以自动将 JSON 转换为数组:

    public function getDataAttribute($value)
    {
        return json_decode($value, true);
    }
    

    【讨论】:

    • 这成功了!!非常感谢^_^
    猜你喜欢
    • 2021-04-10
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2021-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多