dcat-admin
dcat-admin copied to clipboard
设置 depth 无效
- Laravel Version: 8.83.6
- PHP Version: 8.1.1
- Dcat Admin Version: 2.2.*
Description:
namespace App\Models\Admin;
use Closure;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Dcat\Admin\Traits\ModelTree;
use Illuminate\Database\Eloquent\Model;
use Spatie\EloquentSortable\Sortable;
class NewsCategory extends Model implements Sortable
{
use HasDateTimeFormatter, ModelTree {
ModelTree::boot as treeBoot;
}
protected $table = 'admin_news_categories';
// 排序字段名称,默认值为 order
protected $orderColumn = 'sort';
// 标题字段名称,默认值为 title
protected $titleColumn = 'name';
// Since v2.1.6-beta,定义depthColumn属性后,将会在数据表保存当前行的层级
protected $depthColumn = 'depth';
/**
* Get options for Select field in form.
*
* @param Closure|null $closure
* @return array
*/
public static function selectOptions(Closure $closure = null): array
{
$options = (new static())->withQuery($closure)->buildSelectOptions();
return collect($options)->all();
}
/**
* Detach models from the relationship.
*
* @return void
*/
protected static function boot(): void
{
static::treeBoot();
}
}
<?php
namespace App\Admin\Controllers;
use App\Admin\Repositories\NewsCategory;
use Dcat\Admin\Form;
use Dcat\Admin\Grid;
use Dcat\Admin\Http\Controllers\AdminController;
use Dcat\Admin\Layout\Content;
use Dcat\Admin\Admin;
class NewsCategoryController extends AdminController
{
public function index(Content $content): Content
{
Admin::style('.tab-content .da-box{margin-bottom:0}');
return $content->header('新闻分类')
->description('支持无限极分页加载')
->body($this->grid());
}
protected function grid(): Grid
{
$grid = new Grid(new NewsCategory());
$grid->column('id')->bold()->sortable();
$grid->column('name')->tree();
$grid->column('sort')->orderable();
$grid->column('slug')->label('primary');
$grid->column('created_at');
$grid->column('updated_at')->sortable();
$grid->disableEditButton();
$grid->showQuickEditButton();
$grid->enableDialogCreate();
$grid->disableBatchDelete();
$grid->disableViewButton();
$grid->filter(function (Grid\Filter $filter) {
$filter->like('slug');
$filter->like('name');
});
return $grid;
}
public function form(): Form
{
return Form::make(NewsCategory::class, static function (Form $form) {
$id = $form->getKey();
$form->display('id', 'ID');
$form->select('parent_id', trans('admin.parent_id'))
->options(\App\Models\Admin\NewsCategory::selectOptions())
->saving(function ($v) {
return (int) $v;
});
$form->number('sort')->default(0);
$form->text('slug', trans('admin.slug'))
->required()
->creationRules(['required', "unique:admin_news_categories"])
->updateRules(['required', "unique:admin_news_categories,slug,$id"]);
$form->text('name', trans('admin.name'))->required();
$form->display('created_at', trans('admin.created_at'));
$form->display('updated_at', trans('admin.updated_at'));
$form->disableViewButton();
$form->disableViewCheck();
});
}
}
Steps To Reproduce:

Laravel Framework 9.8.1 Dcat Admin version 2.2.0-beta
同样 depth 设置无效


@jqhph
@faydanube 我也遇到同样的问题了。2.2版本,你解决了么?
@faydanube 我也遇到同样的问题了。2.2版本,你解决了么?
没,还在关注中。这个字段不是必须要使用,所以一直也没去解
This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.
我也遇到了同样的问题,不是说2.1.6就解决了吗,我用的2.2.2呀
protected static function boot()
{
parent::boot();
self::creating(function (self $model) {
if ($model->parent) {
$model->depth = $model->parent->depth + 1;
}
});
}
自己实现吧