关于 dcat-admin 使用 multipleSelectTable 选择后默认是 name 字段

关于 dcat-admin 使用 multipleSelectTable 选择后默认是 name 字段

PHP 2天前 17 0

最近用 dcat-admin 使用 multipleSelectTable 后发现选择项目不是我想要的。默认带出了 name 参数,提交后重新刷新又是正常的,排查了 select-table.js 后确认了是取了table 里边的 checkbox 中 data-id 和 data-label 的值再翻了下 grid 源码后,最终解决方案如下:

$form->multipleSelectTable('sku', '商品')
                ->from(ThinkGoodSkuTable::make())
                ->dialogWidth('1000px')
                ->options(function () use ($form) { // 设置编辑数据显示
                    if($form->model()->type == Coupon::TYPE_EXCHANGE){
                        $v = $form->model()->rules;
                        if (! $v) {
                            return [];
                        }
                        return ThinkGoodSku::with('thinkGoods')->whereIn('id', $v)->get()->pluck('thinkGoods.name', 'id');
                    }
                })->value($form->model()->rules);
class ThinkGoodSkuTable extends LazyRenderable
{
    public function grid(): Grid
    {
        return Grid::make(ThinkGoodSku::with('thinkGoods'), function (Grid $grid) {
            $grid->rowSelector()->titleColumn("sku");
            ...
        });
    }
}

如果你想用关联关系可以,关联关系的 key 记得如果是驼峰改成下划线:`$grid->rowSelector()->titleColumn("think_good.name");`

原文: http://yiqiao.me/articles/42/regarding-dcat-admin-using-multipleselecttable-to-select-defaults-to-the-name-field

版权声明: 自由转载-非商用-非衍生-保持署名 (创意共享3.0许可证)