column('id', 'ID')->sortable(); $grid->column('pet_id', '宠物ID')->sortable(); $grid->column('level', '等级')->sortable(); $grid->column('exp_required', '升级所需经验值')->sortable(); $grid->column('skills_list', '技能')->label(); $grid->column('created_at', '创建时间'); $grid->column('updated_at', '更新时间'); // 默认按等级排序 $grid->model()->orderBy('level', 'asc'); // 筛选 $grid->filter(function ($filter) { $helper = new FilterHelper($filter, $this); $helper->equal('id', 'ID'); $helper->equalSelectModelPet('pet_id', '宠物'); $filter->equal('level', '等级'); $filter->between('exp_required', '升级所需经验值'); $filter->between('stamina_max', '最大体力值'); }); $grid->actions(function (Grid\Displayers\Actions $actions) { $actions->disableDelete(); }); return $grid; }); } /** * 详情页 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new PetLevelConfigRepository(), function (Show $show) { $helper = new ShowHelper($show, $this); $helper->field('id', 'ID'); $show->field('pet_id', '宠物ID'); $show->field('level', '等级'); $show->field('exp_required', '升级所需经验值'); $show->field('skills_list', '可用技能')->unescape(); $show->field('display_attributes', '等级显示属性配置')->json(); $show->field('numeric_attributes', '等级数值属性配置')->json(); $show->field('created_at', '创建时间'); $show->field('updated_at', '更新时间'); return $show; }); } /** * 表单 * * @return Form */ protected function form() { return Form::make(new PetLevelConfigRepository(), function (Form $form) { $helper = new FormHelper($form, $this); $form->display('id', 'ID'); $helper->selectModelPet('pet_id', '宠物') ->required() ->help('关联的宠物ID'); $form->number('level', '等级') ->min(1) ->max(30) ->required() ->help('宠物等级,范围1-30'); $form->number('exp_required', '升级所需经验值') ->min(0) ->required() ->help('升级到该等级所需的经验值总量'); $helper->selectMModelSkill('skills', '可用技能') ->help('该等级可使用的技能列表'); $helper->embedsCats('display_attributes', '等级显示属性配置') ->help('该等级宠物的显示属性配置'); $helper->embedsCats('numeric_attributes', '等级数值属性配置') ->help('该等级宠物的数值属性配置'); $form->display('created_at', '创建时间'); $form->display('updated_at', '更新时间'); // 保存前回调 $form->saving(function (Form $form) { // 验证pet_id和level组合的唯一性 if ($form->pet_id && $form->level) { $exists = PetLevelConfig::where('pet_id', $form->pet_id) ->where('level', $form->level) ->where('id', '<>', $form->model()->id) ->exists(); if ($exists) { return $form->error('该宠物的此等级配置已存在'); } } }); return $form; }); } }