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()
上一篇下一篇

猜你喜欢

热点阅读