1

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

如果我用不在表中的不存在的名称更新“名称”,它将毫无问题地工作。

错误

路由器

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

1 回答 1

2

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

php artisan route:list

查看将哪些中间件应用于updateClub路由名称并验证此中间件代码,因为其中一些可能进行了不正确的重定向(GETPOST具有示例的路由方法)。

第二件事(这里不会引起问题,但您应该遵循一些标准) - 如果您创建更新某些内容的操作,您应该使用PUT方法(POST 用于创建新对象),因此在这条路线的路线和形式中,您应该更改POST 到 PUT

编辑

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

Route::post('someroute' ...

进入:

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

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

于 2016-04-09T16:42:46.640 回答