MethodnotallowedExeption 当我从以前的 post 路线打补丁时

MethodnotallowedExeption when I patch from previous post route

首先,我向错误的路由动词发送请求并不是入门级错误。

我的情况是这样的:我有一条 post 路线

Route::post('/user/edit', 'UserController@edit');

当我点击这条路线时,我有一个随机表格来更新特定的用户详细信息。问题是当我提交表格时它会转到路线:

Route::put('user/update','UserController@update'); 

一切正常。但是我想添加一点验证,这样用户就不会向我发送相同的现有数据,所以我为此添加了一个验证:

  if($this->method() =='PUT'){
        return [
            'name'=>'required|unique:users,name'
        ];
    }

事情是当验证启动时它重定向回消息我可以手动捕获会话并且我看到验证正在工作,它应该发送回第一条路线但是我得到一个方法不允许的异常。我假设验证基方法发回 GET 请求?

知道如何解决这个问题 >

是的,这就是验证的工作原理。当数据无效时,显然会使用 GET 方法重定向到表单。

一般来说,您不应在 POST 操作中显示表单。通常你应该做的是重定向到通过 GET 可用的其他路由。这通常也适用于多步表单:

GET step1 -> POST step 1 -> GET step 2 -> POST step 2 依此类推。

所以你应该在你的情况下做完全相同的事情以使其与验证一起工作。

发生这种情况是因为验证器发送了带有 HTTP 状态代码 302 的响应,并且浏览器本身始终将重定向解释为 GET

当您向用户显示页面时,您不应该使用除 GET 之外的其他方法,以避免此类问题。创建一个 GET 路由来显示您的表单,如果需要在 POST 请求后显示表单,请使用重定向到您的 GET 路由。