all()); $query->select(['id', 'name as text']); if ($request->filled('_paginate')) { $list = $query->paginate(); } else { $list = $query->get(); } return $list; } protected function grid() { return Grid::make(new Keywords(), function ($grid) { $grid->column('name')->tree(); $grid->column('key'); $grid->column('value'); $grid->enableDialogCreate(); $grid->quickSearch(['name', 'type_key', 'key']); }); } /** * Make a show builder. * * @param mixed $id * * @return Show */ protected function detail($id) { return Show::make($id, new Keywords(), function (Show $show) { $show->field('id'); $show->field('key'); $show->field('name'); $show->field('value'); $show->field('parent_id'); }); } /** * Make a form builder. * * @return Form */ protected function form() { return Form::make(new Keywords(), function (Form $form) { $form->select('parent_id')->ajax(admin_url('api/keywords?'.http_build_query(['_paginate' => 1, 'parent_id' => '0'])))->model(Keywords::class, 'id', 'name'); $unique = Rule::unique((new Keywords())->getTable()); if ($form->isEditing()) { $unique->ignore($form->getKey()); } $form->text('key')->required()->rules([$unique])->help('不能重复'); $form->text('name')->required(); $form->text('value'); $form->hidden('type_key'); $form->hidden('level')->default(1); $form->saving(function (Form $form) { if ($form->parent_id) { $parent = Keywords::findOrFail($form->parent_id); $form->type_key = $parent->key; $form->level = $parent->level + 1; } else { $form->parent_id = 0; } if ($form->isEditing()) { Keywords::where('parent_id', $form->getKey())->update(['type_key' => $form->key]); } }); }); } }