【发布时间】:2023-02-20 02:46:14
【问题描述】:
我有一个列表,其中每个条目都有一个删除按钮,它可以完美地工作,创建功能也是如此。我正在尝试添加一个编辑按钮,并且可以设法创建请求新名称的弹出窗口。
当我创建一个新条目并尝试对其进行编辑时,它会再次显示创建表单。当我尝试编辑旧条目时,它告诉我
快点!更改一些内容并尝试再次提交。 category.name 字段是必需的。
我的完整代码在这里,完成:
namespace App\Orchid\Screens; use Orchid\Screen\Screen; use Orchid\Screen\Fields\Input; use Orchid\Support\Facades\Layout; use Orchid\Screen\TD; use Orchid\Screen\Actions\ModalToggle; use App\Models\Category; use Illuminate\Http\Request; use Orchid\Screen\Actions\Button; class CategoryScreen extends Screen { /** * Fetch data to be displayed on the screen. * * @return array */ public function query(): iterable { return [ 'categories' => Category::latest()->get(), ]; } /** * The name of the screen displayed in the header. * * @return string|null */ public function name(): ?string { return 'Category Screen'; } /** * The screen's action buttons. * * @return \Orchid\Screen\Action[] */ public function commandBar(): iterable { return [ ModalToggle::make('category') ->icon('plus') ->method('create') ->modal('createCategory'), ]; } /** * The screen's layout elements. * * @return \Orchid\Screen\Layout[]|string[] */ public function layout(): iterable { return [ Layout::table('categories', [ TD::make('name'), // Create a delete button TD::make('Actions') ->alignRight() ->render(function (Category $category) { return Button::make('') ->icon('trash') ->confirm( 'After deleting, the category will be gone forever.' ) ->method('delete', [ 'category' => $category->id, ]); }), TD::make('Actions') ->alignRight() ->render(function (Category $category) { return Button::make('') ->icon('pencil') ->modal('editCategoryModal', [ 'category' => $category, ]) ->method('edit', [ 'category' => $category->id, ]); }), ]), Layout::modal('createCategory', [ Layout::rows([ Input::make('category.name') ->title('Name') ->placeholder('Enter category name'), ]), ]) ->title('Create category') ->applyButton('Create'), ]; } // Make a create method that validates name field public function create(Request $request) { $request->validate([ 'category.name' => 'required|max:255', ]); // Create a new category $category = new Category(); $category->organisation_id = auth()->user()->organisation_id; $category->name = $request->category['name']; $category->save(); } // Make a delete method that deletes the category public function delete(Request $request) { $category = Category::find($request->category); $category->delete(); } // Make an edit method that validates name field public function edit(Request $request) { $request->validate([ 'category.name' => 'required|max:255', ]); // Update the category $category = Category::find($request->category->id); $category->name = $request->category['name']; $category->save(); } public function editCategoryModal(): iterable { return [ Layout::modal('editCategory', [ Layout::rows([ Input::make('category.name') ->title('Name') ->placeholder('Enter category name'), ]), ]) ->title('Edit category') ->applyButton('Save') ]; } }我是 Laravel Orchid 的新手,所以我承认我可能会以完全错误的方式解决这个问题,但文档不包含有关如何执行此操作的示例。 谢谢。
【问题讨论】: