【发布时间】: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请求的方式 - stackoverflow.com/a/28144127/10625611 -
@Qumber 你好,我也尝试过 PUT,屏幕上出现同样的错误,这是上次尝试留下的:D 我通常使用 PUT
-
@UkraineInTheMembrane 有我的路线列表的图像。我看到所有这些,更新是 PUT|PATCH 你也可以在这里看到prnt.sc/tvjw2i
标签: laravel