Dcat Admin 文档 Help

JSON格式字段处理

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

键值对象 (keyValue)

Key value

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

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

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

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

固定键值对象 (embeds)

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)

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)

Form table

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

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

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

二维数组 (array)

Has many

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

$form->array('column_name', function ($table) { $table->text('key'); $table->text('value'); $table->textarea('desc'); })->saveAsJson();
Last modified: 30 八月 2024