【发布时间】:2021-03-25 17:52:21
【问题描述】:
我对 Laravel 8 和 AdminLTE 有疑问。基本上,我安装了 Admin LTE 和一个对象 Editos。我在这个菜单中有两个按钮:添加编辑和编辑。两者都重定向到相同的表单,但使用不同的 Laravel 路由。所以我的 form.blade.php 以 :
开头<form
method="post"
action="{{ Route::currentRouteName() === 'editos.edit' ? route('editos.update', $edito->id) : route('editos.store') }}">
@if(Route::currentRouteName() === 'editos.edit')
@method('PUT')
@endif
@csrf
两个按钮都重定向到正确的路线。 ADD 功能完美运行:我填写表单并按下提交按钮,调用带有 POST 方法的 'editos.store 函数,并且编辑存储在我的数据库中。 但是当我点击 EDIT 时,它与编辑路线一起(ok),它加载实际字段(ok),但我点击提交,它调用'editos.update'路线(ok)但我得到了这个 Laravel 错误留言:
我的路由在我的 web.php 中是这样定义的:
Route::prefix('admin')->group(function () {
Route::middleware('admin')->group(function () {
Route::put('editos/update/{id}', [BackEditoController::class, 'update'])->name('editos.update');
Route::name('admin')->get('/', [AdminController::class, 'index']);
Route::name('purge')->put('purge/{model}', [AdminController::class, 'purge']);
Route::name('editos.create')->get('edito/create', [BackEditoController::class, 'create']);
Route::name('editos.store')->post('editos/store', [BackEditoController::class, 'store']);
Route::name('editos.edit')->get('editos/edit/{id}', [BackEditoController::class, 'edit']);
Route::name('editos.destroy')->post('editos/destroy', [BackEditoController::class, 'destroy']);
Route::name('editos')->get('editos', [BackEditoController::class, 'index']);
});
});
(我只是把editos/update/放在最上面试试,也改变了语法,但把它放在别的地方不起作用)。 如你所见,它是一个 PUT 函数,在我做 route:list 时它也被定义为一个 PUT 函数。我已经尝试过 dump-autoload 和 cache clear composer 命令。
Controller中的更新函数是:
public function update(EditoRequest $request, EditoRepository $repository, Edito $edito, $id = null)
{
$edito = null;
if($id) {
$edito = Edito::findOrFail($id);
}
$repository->update($edito, $request);
return back()->with('ok', __('The edito has been successfully updated'));
}
而存储库功能是:
public function update($edito, $request)
{
$request->merge([
'active' => $request->has('active'),
'image' => basename($request->image),
]);
$edito->update($request->all());
$this->saveCategoriesAndTags($edito, $request);
}
我完全被卡住了,如果有人看到解决方案,那就太棒了!
【问题讨论】: