Php 在laravel中更新记录时MethodNotAllowedHttpException
我最近加入了Laravel框架,所以我首先尝试在Laravel中创建一个CRUD系统,以了解它们的基本原理和功能 现在,在更新现有记录时,我遇到了一个错误MethodNotAllowedHttpException 在我的路线中这里Php 在laravel中更新记录时MethodNotAllowedHttpException,php,laravel,laravel-5,Php,Laravel,Laravel 5,我最近加入了Laravel框架,所以我首先尝试在Laravel中创建一个CRUD系统,以了解它们的基本原理和功能 现在,在更新现有记录时,我遇到了一个错误MethodNotAllowedHttpException 在我的路线中这里 Route::resource('product', 'ProductController'); | GET|HEAD | product | product.index | App\Http\Control
Route::resource('product', 'ProductController');
| GET|HEAD | product | product.index | App\Http\Controllers\ProductController@index
| POST | product | product.store | App\Http\Controllers\ProductController@store
| GET|HEAD | product/create | product.create | App\Http\Controllers\ProductController@create
| GET|HEAD | product/{product} | product.show | App\Http\Controllers\ProductController@show
| DELETE | product/{product} | product.destroy | App\Http\Controllers\ProductController@destroy
| PUT|PATCH | product/{product} | product.update | App\Http\Controllers\ProductController@update
| GET|HEAD | product/{product}/edit | product.edit | App\Http\Controllers\ProductController@edit
这给了我以下可能的路线列表
Route::resource('product', 'ProductController');
| GET|HEAD | product | product.index | App\Http\Controllers\ProductController@index
| POST | product | product.store | App\Http\Controllers\ProductController@store
| GET|HEAD | product/create | product.create | App\Http\Controllers\ProductController@create
| GET|HEAD | product/{product} | product.show | App\Http\Controllers\ProductController@show
| DELETE | product/{product} | product.destroy | App\Http\Controllers\ProductController@destroy
| PUT|PATCH | product/{product} | product.update | App\Http\Controllers\ProductController@update
| GET|HEAD | product/{product}/edit | product.edit | App\Http\Controllers\ProductController@edit
编辑表单视图
@extends('layouts.app')
@section('title','Product List')
@section('content')
<div class="container">
<form action="{{url('product/'.$product['id'])}}" class="form-horizontal">
<div class="form-group">
<label for="exampleInputEmail1">Name</label>
{{csrf_field()}}
{{ method_field('PUT')}}
<!-- <input name="_method" type="hidden" value="PUT"> -->
<input type="text" name="name" class="form-control" id="exampleInputEmail1" value="{{$product['name']}}" aria-describedby="emailHelp" placeholder="">
</div>
<div class="form-group">
<label for="exampleInputEmail1">category</label>
<input type="text" value="{{$product['category']}}" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" name="category" placeholder="">
</div>
<div class="form-group">
<label for="exampleInputEmail1">weight</label>
<input type="text" value="{{$product['weight']}}" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" name="weight" placeholder="">
</div>
<div class="form-group">
<label for="exampleInputEmail1">price</label>
<input type="text" value="{{$product['price']}}" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" name="price" placeholder="">
</div>
<button type="submit" class="btn btn-primary">Save</button>
</form>
</div>
@endsection
在这种情况下,每当我想要通过重新填充编辑表单来更改现有记录数据时。它生成MethodNotAllowedHttpException错误
我尝试了很多解决方案,但都没有解决。所以,请指引我哪里出了问题。感谢提供update()
您需要使用PUT
方法。因此,将这一行添加到表单中:
<input name="_method" value="PUT" type="hidden">
这是因为您使用了错误的HTTP方法来更新现有记录。您需要通过方法欺骗将方法指定为
PUT
。
试试这个:
<div class="container">
<form action="{{ route('product.update', $product['id']) }}" method="POST" class="form-horizontal">
{{ csrf_field() }}
{{ method_field('PUT')}} //method Spoofing
<div class="form-group">
<label for="exampleInputEmail1">Name</label>
<input type="text" name="name" class="form-control" id="exampleInputEmail1" value="{{ $product['name'] }}" aria-describedby="emailHelp" placeholder="">
</div>
<div class="form-group">
<label for="exampleInputEmail1">category</label>
<input type="text" value="{{$product['category']}}" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" name="category" placeholder="">
</div>
<div class="form-group">
<label for="exampleInputEmail1">weight</label>
<input type="text" value="{{$product['weight']}}" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" name="weight" placeholder="">
</div>
<div class="form-group">
<label for="exampleInputEmail1">price</label>
<input type="text" value="{{$product['price']}}" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp" name="price" placeholder="">
</div>
<input type="submit" name="submit" class="btn btn-primary">Save</button> //input type, not button
</form>
</div>
{{csrf_field()}}
{{method_field('PUT')}}//方法欺骗
名称
类别
重量
价格
保存//输入类型,而不是按钮
我认为问题出在
<form action="{{url('product/'.$product['id'])}}" class="form-horizontal">
我用method=“POST”声明表单,然后:{{method_field('PUT')}解决了这个问题
@extends('layouts.app'))
@章节(‘标题’、‘产品清单’)
@节(“内容”)
名称
{{csrf_field()}}
{{method_字段('PUT')}
类别
重量
价格
拯救
@端部
确定,已添加。但它没有回应。我的URL栏将填充他们更改的数据。。!您仅在创建时才执行重定向。在未创建的情况下覆盖案例可能会引用如何创建works@BugInspectorLjubaddr是正确的,只有当$created
为true
时,您才可以重定向。谢谢:)好的,补充说。但它没有回应。我的URL栏将填充他们更改的数据。。!请出示您的完整表格对不起,您要哪张表格。。。检查我的答案。谢谢你问这个问题。