[Dcat Admin]表单无限极select
实现下图:
GoodsCategory代码
<?php
namespace App\Models;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Dcat\Admin\Traits\ModelTree;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
class GoodsCategory extends Model
{
use ModelTree; //必须
use HasDateTimeFormatter;
use SoftDeletes;
protected $titleColumn = 'name'; //如果表中分类名称字段名不是‘title’
protected $orderColumn = 'sorts'; //如果表中排序字段名不是‘order’
public static function getAll ()
{
return self::where('status', 1)->whereNull('deleted_at')->latest('sorts')->get(['id', 'name', 'parent_id']);
}
public static function selectOptions(\Closure $closure = null)
{
$options = (new static())->withQuery($closure)->buildSelectOptions();
return collect($options)->all();
}
}
GoodsController中使用
//表单中
$form->select('category_id')
->options(GoodsCategory::selectOptions())
->saving(function ($v) {
return (int) $v;
})->required();
//筛选器中
$filter->equal('category_id')->select(function () {
return GoodsCategory::selectOptions();
});
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: