baseCRUD() ->filterTogglable(false) ->columnsTogglable(false) ->loadDataOnce(true) ->footerToolbar([]) ->headerToolbar([ $this->createButton(), amis('reload')->align('right'), ]) ->filter($this->baseFilter()->actions()->body([ Components::make()->parentControl(admin_url('api/keywords/tree-list'), 'path', __('keywords.parent_id'))->size('md')->clearable(), amisMake()->TextControl()->name('key')->label(__('keywords.key'))->size('md')->clearable(), // amisMake()->Button()->label(__('admin.reset'))->actionType('clear-and-submit'), amisMake()->Component()->setType('submit')->label(__('admin.search'))->level('primary'), ])) ->columns([ amisMake()->TableColumn()->name('id')->label(__('keywords.id')), amisMake()->TableColumn()->name('name')->label(__('keywords.name')), amisMake()->TableColumn()->name('key')->label(__('keywords.key')), amisMake()->TableColumn()->name('value')->label(__('keywords.value')), $this->rowActions(), ]); return $this->baseList($crud); } public function form(): Form { return $this->baseForm()->body([ Components::make()->parentControl(admin_url('api/keywords/tree-list'), 'parent_id', __('keywords.parent_id')), amisMake()->TextControl()->name('name')->label(__('keywords.name'))->required(true), amisMake()->TextControl()->name('key')->label(__('keywords.key'))->required(true), amisMake()->TextControl()->name('value')->label(__('keywords.value')), amisMake()->ImageControl()->name('image')->label(__('keywords.image'))->autoUpload(true), amisMake()->ImageControl()->name('images')->label(__('keywords.images'))->multiple()->receiver(admin_url('upload_image') . '?full-url=1')->autoUpload(true), Components::make()->sortControl('sort', __('keywords.sort')), amisMake()->TextareaControl()->name('description')->label(__('keywords.description')), amisMake()->inputKV()->name('options')->label(__('keywords.options')), Components::make()->fuEditorControl()->name('content')->label(__('keywords.content')), ]); } public function detail() { return $this->baseDetail()->body([ amisMake()->TextControl()->name('parent.name')->label(__('keywords.parent_id'))->static(true), amisMake()->TextControl()->name('name')->label(__('keywords.name'))->static(true), amisMake()->TextControl()->name('key')->label(__('keywords.key'))->static(true), amisMake()->TextControl()->name('value')->label(__('keywords.value'))->static(true), amisMake()->TextControl()->name('image')->label(__('keywords.image'))->static(true)->staticSchema(amisMake()->Image()), amisMake()->TextControl()->name('images')->label(__('keywords.images'))->static(true)->staticSchema(amisMake()->Images()), amisMake()->TextControl()->name('sort')->label(__('keywords.sort'))->static(true), amisMake()->TextareaControl()->name('description')->label(__('keywords.description'))->static(true), amisMake()->TextControl()->name('options')->label(__('keywords.options'))->static(true)->staticSchema(amisMake()->Json()), Components::make()->fuEditorControl()->name('content')->label(__('keywords.content'))->static(), ]); } public function update(Request $request) { $result = $this->service->update($request->route()->parameter('keyword'), $request->all()); return $this->autoResponse($result, __('admin.save')); } public function getTreeList(Request $request) { return $this->service->getTree($request->all()); } public function getList(Request $request) { $list = Keyword::filter($request->all())->select(['id as value', 'name as label'])->get(); return $this->response()->success($list); } }