Laravel 错误 - 更新时不允许发布方法(使用 @method('put))
Posted
技术标签:
【中文标题】Laravel 错误 - 更新时不允许发布方法(使用 @method(\'put))【英文标题】:Laravel error - post method not allowed on update (with @method('put))Laravel 错误 - 更新时不允许发布方法(使用 @method('put)) 【发布时间】:2020-11-27 05:48:57 【问题描述】:我对 laravel 有一个奇怪的问题。所以点击编辑按钮后会出现这个错误
The POST method is not supported for this route. Supported methods: GET, HEAD.
当我刷新页面时,它只会显示一个应该显示的表单。所以这意味着代码是正确的......对吗?
Edit.Blade:
<form action=" route('categories.update', $category->slug) " method="post">
@csrf
@method('put')
<div class="form-group">
<label for="name">Category</label>
<input type="text" name="name" class="form-control" value=" $category->name ">
</div>
<div class="form-group">
<button type="submit" name="btn-updateCategory" class="btn btn-block btn-success">Update category</button>
</div>
</form>
我确定这个 $category->slug 部分不是问题.. :)
此外,当我刷新页面并且错误消失时,我的控制器也会完成它的工作(更新类别)。
它也发生在其他项目上,我认为这是我的错,由于我不知道如何解决它并且没有发现代码中有任何错误,所以从头开始那个项目并完成它而没有遇到这个问题。
编辑
这是我的路线:列表 https://prnt.sc/tvjw2i
这是我的 web.php
Route::group(['prefix' => 'admin', 'middleware' => ['auth', 'admin']], function()
Route::resource('/posts', 'PostsController');
Route::resource('/categories', 'CategoriesController');
);
问题已解决: 没有人,包括我,意识到我们正在寻找错误的形式。由于当我尝试进入更新页面而不是更新页面时出现错误,因此 index.blade.php 上的错误而不是 edit.blade.php 上的错误。
【问题讨论】:
嗨 Sead,欢迎来到 SO!您可以在routes/web.php
中发布相关内容吗?另外 - 如果您在项目根目录中运行 php artisan route:list
,您是否看到列出的路线?
另外,下定决心。 :D 看来你在routes/web.php
中的路线categories.update
采用GET
方法。您的表单的method
是POST
,而另一个@method
指令设置为PUT
。因为,你正在更新一些东西,你可能想要PUT
;更改web.php
中的路由方法。这就是您从视图中发送PUT
请求的方式 - ***.com/a/28144127/10625611
@Qumber 你好,我也尝试过 PUT,屏幕上出现同样的错误,这是上次尝试留下的:D 我通常使用 PUT
@UkraineInTheMembrane 有我的路线列表的图像。我看到所有这些,更新是 PUT|PATCH 你也可以在这里看到prnt.sc/tvjw2i
【参考方案1】:
这是路由的问题,请向我们展示您的 web.php 文件。 如果您没有将路由注册为资源,那么它应该如下所示
//route for categories update
Route::post(categories/id/update,’CategoriesController@update’);
或者如果你正在使用资源控制器
route::resource(‘categories’,CategoriesController’);
请检查一下。
【讨论】:
我已经编辑了我的问题。在那里你可以检查我的 web.php以上是关于Laravel 错误 - 更新时不允许发布方法(使用 @method('put))的主要内容,如果未能解决你的问题,请参考以下文章
错误:(405) 将文件上传到 https 时不允许使用方法