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 网站上。

上一篇 下一篇
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 0
发起讨论 查看所有版本


暂无话题~