Laravel 5.2:RouteCollection.php 行 219 中的 MethodNotAllowedHttpException - 更新表单

Laravel 5.2 : MethodNotAllowedHttpException in RouteCollection.php line 219 - updating the forms

我有一个表格,我正在尝试更新表格。在表单中,'name'是一个唯一字段(在请求页面添加了唯一条件,在table中,名称设置为唯一)。当我尝试更新表格时(我提供了值,table 中已经存在),它显示 'MethodNotAllowedHttpException in RouteCollection.php line 219' 错误。

如果我用 table 中不存在的不存在的名称更新 'name',它将正常工作。

路由器

Route::group(['middleware' => ['superadmin']], function () {
    Route::post('/sadmin/update_club',array('uses' => 'SAdmin\ClubController@updateClub', 'as' => 'updateClub'));
}

要求

class UpdateClubRequest extends Request
{    
   public function authorize()
   {
      return true;
   }
   public function rules()
   {
     return [
        'name' => 'required|max:150|unique:clubs,name,'.Request::input('id'),
        'logo' => 'image|mimes:jpeg,png,bmp,gif,svg|max:10000',
      ];
   }
 }

布局页面

{{ Form::open(array('route' => 'updateClub', 'method' => 'POST', 'class' => 'form-horizontal', 'files'=>true)) }}

  {{ Form::hidden('id', $club[0]['id']) }}
  {{ Form::text('name', $club[0]['name'], array('class' => 'form-control', 'maxlength' => 50)) }}

{{ Form::close() }}   

我在这里没有看到任何错误,所以错误可能出在其他地方。例如,我看到您正在为这条路线使用 superadmin。你应该在控制台中 运行:

php artisan route:list

查看哪些中间件应用于 updateClub 路由名称并验证此中间件代码,因为它们中的一些可能正在进行错误的重定向(方法 GET 到仅具有 POST 例如)。

第二件事(这里没有问题,但你应该遵循一些标准)- 如果你创建更新某些内容的操作,你应该使用 PUT 方法(POST 用于创建新对象), 所以在这条路线的路线和形式中你应该把 POST 改成 PUT

编辑

问题也可能有点不同。假设您有多步表单(可能是您的情况,因为您仅将 POST 用于 ,因此您使用以下方法 GET (step1) -> POST (step2) -> POST(第 3 步)。所以现在,如果在第 2 步中出现错误,请求 class 将尝试再次重定向到第 2 步,但使用 GET 方法,因此您应该在 routes.php 中也允许 GET 方法,所以在你的情况下你应该改变

Route::post('someroute' ...

进入:

Route::match(['get','post'], 'someroute' ...

您应该为显示此表单的页面执行此操作