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 方法。您的表单的methodPOST,而另一个@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(发出 Ajax 请求时不允许使用该方法)

错误:(405) 将文件上传到 https 时不允许使用方法

不允许 Laravel 和 Ajax 更新

错误 HTTP 状态 405 ?使用 GCP 负载平衡器时不允许的方法

为啥在 Laravel 中保存数据时出现方法不允许错误?

Laravel 5.4 错误 405 方法不允许错误