dcat-admin表格选择器异步加载选项卡以及存在的问题
2021-04-26 本文已影响0人
dark68
情景描述
想要在表单页面实现一个表格选择器,由于后期可能存在多个品类,又不想指定多个表格选择器,所以想搞个选项卡试试……
1 表格选择器
#控制器中form()添加下列代码,指定一个表格选择器
$form->selectTable('column')
->title('title')
->from(TestTable::make());
2 异步表格(TestTable)
namespace App\Admin\Renderable;
use App\Admin\Repositories\Goods;
use App\Models\DictDict;
use Dcat\Admin\Grid;
use Dcat\Admin\Grid\LazyRenderable;
use Dcat\Admin\Widgets\Tab;
use Illuminate\Contracts\Support\Renderable;
class GoodsTable extends LazyRenderable
{
/**选项卡和栏目一的数据
* @inheritDoc
*/
public function grid(): Grid
{
$array = [1=>'栏目1',2=>'栏目2'];
return Grid::make(new DictDict(),function (Grid $grid)use($array){
//设置选项卡功能
$grid->wrap(function(Renderable $view)use($array){
$tab = Tab::make();
#$view当前模型(DictDict)的Grid数据
$tab->add($array[1],$view,true);
$tab->add($array[2],$this->column_1());
return $tab;
});
$grid->column('id');
$grid->column('name','名称');
$grid->paginate(10);
});
}
/**栏目二的数据
* @return Grid
*/
protected function column_2()
{
return Grid::make(new Goods(),function (Grid $grid){
$grid->column('id');
$grid->column('name','名称');
$grid->paginate(10);
//禁用操作功能
$grid->disableActions();
//设置过滤条件
$grid->filter(function (Grid\Filter $filter){
//更改布局
$filter->panel();
$filter->like('name','名称')->width(4);
});
});
}
}
显示效果如下:
异步弹框选项卡
存在问题
现在可以对表格数据进行选择,选中后数据可以放入父级页面的表单中,但是目前SelectTable中的model()只能绑定单个模型进行数据显示,使用选项卡无法判断具体调用的哪个Model,导致后台数据无法匹配。
SelectTable中model()