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)

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

《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 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年前

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