最近用 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");`
版权声明: 自由转载-非商用-非衍生-保持署名 (创意共享3.0许可证)