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

时间:2016-04-09 15:51:22

标签: laravel laravel-5.2 laravel-routing laravel-middleware

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

如果我更新了'名称'对于不在表中的不存在的名称,它将没有任何问题。

Error

路由器

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() }}   

1 个答案:

答案 0 :(得分:2)

我在这里看不到任何错误,因此可能的错误可能在其他地方。例如,我看到您使用superadmin作为此路线。你应该在控制台中运行:

php artisan route:list

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

第二件事(它不会导致问题,但你应该遵循一些标准) - 如果你创建更新某些东西的动作,你应该使用POST方法(POST用于创建新对象),因此,在此路线的路线和形式中,您应将POST更改为PUT

修改

问题可能也有点不同。让我们假设你有多步形式(可能这是你的情况因为你只使用POST,所以你使用以下方法GET(step1) - > POST(step2) - > POST(step3)现在,如果在step2中你得到错误,请求类会尝试再次重定向到step2,但是使用GET方法,所以你应该在routes.php中同时允许PUT方法,所以在你的情况下你可能应该变化

GET

成:

Route::post('someroute' ...

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