Dcat admin表格选择器

dact-admin表格选择器的使用如图

image
image

在使用dact下拉选择框时,如果选择框的数据很多几百条,这样在使用普通的选择框时就会很不友好,在dact-admin里面有一种表格选择器的东西,可以很好的解决这个问题。

1.首先创建异步加载类如下图

2.控制器中的写法

use App\Admin\Renderable\GoodsTable;
use App\Models\ShopGood;


    /**
     * Make a form builder.
     *
     * @return Form
     */
    protected function form()
    {
        return Form::make(new Seckill(), function (Form $form) {
            $form->display('id');
            // $form->text('sku_id');
                         
     $form->selectTable('sku_id','商品')
        ->title('商品') //设备弹框的标题
        ->dialogWidth('50%') //设置弹框的宽度
        ->from(GoodsTable::make()) //设置渲染类实例,并支持自定义传递自定义参数如->from(UserTable::make(['id' => $form->getKey()])) //查询当前行的id ---注意:
        ->model(ShopGood::class, 'id','title'); // 设置编辑数据的显示
              
`注意:->from是 仓库的引入的那个
 ->model 是模型
`



            $form->text('sku_count');
            $form->text('sku_count_over');
            $form->text('seckill_money');
            $form->text('time_id');
            $form->text('state');
            $form->text('Created_at');
            $form->text('Updated_at');
        });
    }

3.加载类中的写法

<?php

namespace App\Admin\Renderable;

use App\Models\ShopGood ;

use Dcat\Admin\Grid;

use Dcat\Admin\Grid\LazyRenderable;

class GoodsTable extends LazyRenderable

{

	public function grid(): Grid

	{

		// 获取外部传递的参数

		$id = $this->id;

		return Grid::make(new ShopGood(), function (Grid $grid) {

		$grid->column('id');

		$grid->column('title','商品名称');

		// $grid->column('created_at');

		// $grid->column('updated_at');

		//指定行选择器选中时显示的值的字段名称

		$grid->rowSelector()->titleColumn('title');

		//下面这个目前不太清除 注释掉也能使用(不知道有什么具体的作用)

		// $grid->quickSearch(['id', 'wx_nickname']);

		$grid->paginate(10); //每页十条数据

		$grid->disableActions(); //禁止操作

		//设置筛选

		$grid->filter(function (Grid\Filter $filter) {

		$filter->like('title','商品名称')->width(4);

		});

		});

	}

}

4.到此结束,一定要注意加载类的引入以及命名空间的写法。多选和单选的原理都是一样的只不过是把selectTable换成multipleSelectTable。

5.注意:单选和多选不能使用同一个加载类,不然多选就会失效。

OK可以实现了

posted @ 2022-09-30 10:22  79524795  阅读(848)  评论(0编辑  收藏  举报