dcat-admin
dcat-admin copied to clipboard
json表单中的表格拖动,表格排序
首先: 这是个自问自答的 issue
问: 对于JSON表单中的"二维数组 (table)", 以及"二维数组 (array)"中添加的多项数据, 我们有时候需要将数据在数据库中的存储顺序做一些调整, 该如何实现呢? 由于UI界面中不支持拖动排序, 引入第三方js实现会出现js冲突或其他各种难以描述的坑....(省掉800字)......
答: 直接以示例的方式给出解决方案(也就是下面的三个关键点):
$this->table('favorites', '书签列表', function (NestedForm $table) {
$table->number('sort', '排序');//////////关键点①,弄一个你想用来排序的字段
$table->text('title', '名称')->required();
})->saving(function(array $input){//////////关键点②,此处需要有saving( )方法
return collect($input)->sortBy('sort')->values();//////////关键点③, 上面不是用的sort字段么, 这里也对应用sort字段排序就OK了.
});
终结......
json表格拖曳功能后面会加上,如果有时间欢迎提交PR
我现在也有给 JSON $form->array 排序的需求,不熟悉拖拽的 JS 方法,但是加向上和向下的箭头应该比较简单,但除了JS 移动节点,好像还需要维护 foo[0][title], foo[new_2][title] 这样的字段这样的属性值:
<input type="hidden" name="foo[new_1][_remove_]" value="1" class="field_foo_ field__remove__ field__remove_ form-removed field_foo_new_1___remove__ _normal_" build-ignore="1">
<input build-ignore="1" type="text" name="foo[new_2][title]" value="" class="form-control field_foo_ field_title_ field_title" placeholder="输入 title">
暂时还没有头绪(怎么着手改),这几天再研究看看