JSON表单

未匹配的标注
本文档最新版为 2.x,旧版本可能放弃维护,推荐阅读最新版!

JSON格式字段处理

dcat-admin的表单提供了下面几个组件来处理JSON格式的字段,方便用来处理JOSN格式的对象、一维数组、二维数组等对象。

键值对象 (keyValue)

如果你的字段存储的是不固定{"field":"value"}格式,可以用keyValue组件:

$form->keyValue('column_name');

// 设置校验规则
$form->keyValue('column_name')->rules('required|min:5');

固定键值对象 (embeds)

用于处理mysqlJSON类型字段数据或者mongodbobject类型数据,也可以将多个field的数据值以JSON字符串的形式存储在mysql的字符串类型字段中

适用于有固定键值的JSON类型字段

$form->embeds('column_name', function ($form) {

    $form->text('key1')->required();
    $form->email('key2')->required();
    $form->datetime('key3');

    $form->dateRange('key4', 'key5', '范围')->rules('required');
})->saving(funtion ($v) {
    // 转化为json格式存储
    return json_encode($v);
});

// 自定义标题
$form->embeds('column_name', '字段标题', function ($form) {
    ...
});

回调函数里面构建表单元素的方法调用和外面是一样的。

一维数组 (list)

如果你的字段是用来存储["foo", "Bar"]格式的一维数组, 可以使用list组件:

$form->list('column_name');

// 设置校验规则
$form->list('column_name')->rules('required|min:5');

// 设置最大和最小元素个数
$form->list('column_name')->max(10)->min(5);

二维数组 (table)

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

$form->table('column_name', function ($table) {
    $table->text('key');
    $table->text('value');
    $table->text('desc');
})->saving(function ($v) {
    return json_encode($v);
});

这个组件类似于hasMany组件,不过是用来处理单个字段的情况,适用于简单的二维数据。

二维数组 (array)

Since v1.7.0

如果某一个字段存储的是json格式的二维数组,并且字段比较多,可以使用array表单组件来实现快速的编辑:

$form->array('column_name', function ($table) {
    $table->text('key');
    $table->text('value');
    $table->textarea('desc');
})->saveAsJson();

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
讨论数量: 0
发起讨论 只看当前版本


暂无话题~