T-DOC
  • Laravel-11
  • Laravel-10
  • Laravel-6X
  • Laravel-5.5
Dcat-Admin
  • Yii2
  • 重构2
  • Laravel-11
  • Laravel-10
  • Laravel-6X
  • Laravel-5.5
Dcat-Admin
  • Yii2
  • 重构2
  • 入门

    • 简介
    • 安装
    • 1.x升级指南
    • 版本升级
    • 快速开始
    • 开发前必读
    • 主题与颜色
    • 静态资源
    • 视图与自定义页面
    • 多应用 (多后台)
    • JS组件
    • 常见问题
    • Laravel Octane
  • 数据表格

    • 基本使用
    • 列的使用和扩展
    • 列的显示和扩展
    • 行的使用和扩展
    • 工具栏
    • 树状表格
    • 组合表头
    • 数据来源以及查询条件
    • 关联关系
    • 查询过滤
    • 列过滤器
    • 快捷搜索
    • 规格筛选器
    • 数据导出
    • 快捷创建
    • 行内编辑
    • 事件
    • 字段翻译
    • 数据软删除
    • 头部和脚部
    • 异步渲染
  • 数据表单

    • 基本使用
    • 图片/文件上传
    • 字段的使用
    • 字段扩展
    • 数据源
    • 表单弹窗
    • 关联关系
    • JSON表单
    • 分步表单
    • 表单验证
    • 工具表单
    • 事件以及表单响应
    • 初始化
    • 表单布局
    • 字段翻译
    • 字段动态显示
  • 数据详情

    • 基本使用
    • 字段显示
    • 关联关系
    • 字段显示扩展
    • 初始化
    • 字段翻译
  • 模型树

    • 基本使用
  • 数据仓库

    • 基本使用
  • 动作

    • 基本使用
    • 数据表格
    • 数据表单
    • 数据详情
    • 模型树
  • 多语言

    • 基本使用
  • 开发扩展

    • 扩展基本使用
    • 开发扩展
  • 页面组件

    • 异步加载
    • 图表
    • 数据统计卡片
    • 模态窗 (Modal)
    • 工具表单
    • 下拉菜单
    • 单/复选框
    • 选项卡
    • 警告框
    • 提示窗
    • Markdown
    • 卡片
  • 区块 (section)

    • 区块基本使用
  • 动作以及表单响应

    • 动作以及表单响应
  • 权限控制

    • 权限控制
  • 菜单

    • 菜单基本使用
  • 帮助函数

    • 帮助函数
  • 开发工具

    • 基本使用
  • 自定义登陆认证

    • 自定义登录
  • 自定义头部导航

    • 自定义头部导航条
  • 更新日志

    • BETA版本更新日志
    • 更新日志

JSON表单

Dcat Admin 中文文档 /

JSON格式字段处理

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

键值对象 (keyValue)

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

$form->keyValue('column_name');

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

自定义键名以及键值标题翻译

$form->keyValue(...)->setKeyLabel('键名')->setValueLabel('键值');

也可以自定义默认结构,以便于新建数据时候自动带入 keyValue 数据的模板

$form->keyValue('price')->default(['cny' => '', 'usd' => ''])->setKeyLabel('币种')->setValueLabel('价格');

固定键值对象 (embeds)

用于处理mysql的JSON类型字段数据或者mongodb的object类型数据,也可以将多个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(function ($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)

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

$form->array('column_name', function ($table) {
    $table->text('key');
    $table->text('value');
    $table->textarea('desc');
})->saveAsJson();
Last Updated:
Contributors: Hans
Prev
关联关系
Next
分步表单