columnId(); $grid->column('from_type_id', '起始土地类型ID')->sortable(); $grid->column('to_type_id', '目标土地类型ID')->sortable(); $helper->columnCreatedAt(); $helper->columnUpdatedAt(); $grid->filter(function (Grid\Filter $filter) { $filterHelper = new FilterHelper($filter, $this); $filterHelper->equalId(); $filter->equal('from_type_id', '起始土地类型ID'); $filter->equal('to_type_id', '目标土地类型ID'); $filterHelper->betweenDatetime('created_at', '创建时间'); }); }); } /** * 构建详情页 * * @param mixed $id * @return Show */ protected function detail($id) { return Show::make($id, new FarmLandUpgradeConfigRepository(), function (Show $show) { $helper = new ShowHelper($show, $this); $show->field('id', 'ID'); $show->field('from_type_id', '起始土地类型ID'); $show->field('to_type_id', '目标土地类型ID'); $helper->fieldModelCatsJson('materials', '升级所需材料'); $helper->fieldModelCatsJson('conditions', '其他升级条件'); $show->field('created_at', '创建时间'); $show->field('updated_at', '更新时间'); }); } /** * 构建表单 * * @return Form */ protected function form() { return Form::make(new FarmLandUpgradeConfigRepository(), function (Form $form) { $helper = new FormHelper($form, $this); $form->display('id', 'ID'); // 获取所有土地类型选项 $landTypeRepository = new FarmLandTypeRepository(); $landTypeOptions = $landTypeRepository->all()->pluck('name', 'id')->toArray(); $form->select('from_type_id', '起始土地类型ID')->options($landTypeOptions)->required(); $form->select('to_type_id', '目标土地类型ID')->options($landTypeOptions)->required(); $helper->tableMaterials('materials', '升级所需材料'); $helper->tableConditions('conditions', '其他升级条件'); $form->display('created_at', '创建时间'); $form->display('updated_at', '更新时间'); // 验证起始和目标土地类型不能相同 $form->saving(function (Form $form) { if ($form->from_type_id == $form->to_type_id) { return $form->error('起始土地类型和目标土地类型不能相同'); } }); }); } }