我正面临一个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,但没有运气。有人可以帮帮我吗 !感谢。
答案 0 :(得分:2)
由于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>
其余的将是相同的:)