Laravel-admin table 解析 JSON 报错

官方文档说:如果某一个字段存储的是json格式的二维数组,可以使用table表单组件来实现快速的编辑:

$form->table('extra', function ($table) {
    $table->text('key');
    $table->text('value');
    $table->text('desc');
});

同时在模型里面给这个字段增加访问器和修改器:

    public function getExtraAttribute($extra)
    {
        return array_values(json_decode($extra, true) ?: []);
    }

    public function setExtraAttribute($extra)
    {
        $this->attributes['extra'] = json_encode(array_values($extra));
    }

下面是我的代码:

$form->table('result', function ($table) {
            $table->text('name');
            $table->text('age');
        });

测试json,也就是result里存的东西

[
    {
        "name":"zhangsan",
        "age":"20"
    },
    {
        "name":"lisi",
        "age":"21"
    }
]

报错信息:

Invalid argument supplied for foreach() (View: D:\Didongni\App\idongni\vendor\encore\laravel-admin\resources\views\form.blade.php)

所以这里到底要怎么用呢?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 3

你添加修改器和访问器了吗?

4年前 评论
wongvio (楼主) 4年前
lddtime (作者) 4年前
wongvio (楼主) 4年前

在 form.blade.php 把变量 dd 出来就知道了

4年前 评论
TimJuly

两点:

第一,所有数据进行使用之前都需要判断一下

第二,如果你只是针对这个字段进行了json_encode,json_decode这个简单的操作,Mutators 就能完成,不需要自己费劲的写,参考:https://learnku.com/docs/laravel/master/eloquent-m...

4年前 评论
wongvio (楼主) 4年前
TimJuly (作者) 4年前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!