RouteCollection.php第233行中的MethodNotAllowedHttpException:Laravel 5.4

时间:2017-02-28 12:29:39

标签: routes laravel-5.4

我正面临一个MethodNotAllowedHttpException错误。这是我的代码:

在路线档案中:

Route::put('updateitem/{rowId}',[
'as'=>'item.update',
'uses'=> 'CartController@UpdateItem'
]);

在index.blade文件中:

<div class="form-inline">
   <form action="{{ route('item.update',$item->rowId) }}" method="PUT">
       <div class="form-group">
          <input type="number" value="{{$item->qty}}" class="form-control" name="qty">
          <input type="submit" class="btn btn-default btn-sm" value="Update">                                       
       </div>
   </form>
</div>

在控制器文件中:

public function UpdateItem(Request $request, $rowId)
   {
    # code...

   }

我已尝试将路线更改为POST,但没有运气。有人可以帮帮我吗 !感谢。

1 个答案:

答案 0 :(得分:2)

如Laravel文档中所述:

  

由于HTML表单无法发出PUT,PATCH或DELETE请求,因此您需要添加隐藏的_method字段来欺骗这些HTTP谓词。

method_field助手可以为您创建此字段:

{{ method_field('PUT') }}

Laravel文档中的示例:

<form action="/foo/bar" method="POST">
    <input type="hidden" name="_method" value="PUT">
    <input type="hidden" name="_token" value="{{ csrf_token() }}">
</form>

除此之外,您忘记在表单中添加_token字段,这确实会引发异常错误,要解决它,您可以添加上面示例中提到的字段,或者只是添加:< / p>

{{ csrf_field() }}

所以最后你的代码将是:

<div class="form-inline">
    <form action="{{ route('item.update',$item->rowId) }}" method="POST">
       <div class="form-group">
           <input type="number" value="{{ $item->qty }}" class="form-control" name="qty">
           <input type="submit" class="btn btn-default btn-sm" value="Update">     
       </div>
       {{ method_field('PUT') }}
       {{ csrf_field() }}
   </form>
</div>

其余的将是相同的:)