dcat-admin icon indicating copy to clipboard operation
dcat-admin copied to clipboard

设置 depth 无效

Open amorZhu opened this issue 2 years ago • 3 comments

  • 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:

image

amorZhu avatar Apr 05 '22 18:04 amorZhu

Laravel Framework 9.8.1 Dcat Admin version 2.2.0-beta

同样 depth 设置无效 image

image image

@jqhph

faydanube avatar May 17 '22 12:05 faydanube

@faydanube 我也遇到同样的问题了。2.2版本,你解决了么?

amw0918 avatar Jul 30 '22 03:07 amw0918

@faydanube 我也遇到同样的问题了。2.2版本,你解决了么?

没,还在关注中。这个字段不是必须要使用,所以一直也没去解

faydanube avatar Aug 10 '22 12:08 faydanube

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.

stale[bot] avatar Feb 09 '23 05:02 stale[bot]

我也遇到了同样的问题,不是说2.1.6就解决了吗,我用的2.2.2呀

dds813 avatar Mar 02 '23 03:03 dds813

protected static function boot()
    {
        parent::boot();
        self::creating(function (self $model) {
            if ($model->parent) {
                $model->depth = $model->parent->depth + 1;
            }
        });
    }

自己实现吧

webceoboy avatar Oct 30 '23 01:10 webceoboy