我正在尝试执行UPDATE操作,但收到错误Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException
。当我按UPDATE按钮进行数据更新时出现此错误。我无法理解错误原因。请帮忙!!!
控制器块更新方法
public function update(Request $request, $id)
{
$book = Book::find($id);
$book -> BookName = $request->get('NBookName');
$book -> BookID = $request->get('NBookId');
$book -> BookUnitPrice = $request->get('NBookUnitPrice');
if($book->save())
{
return view('pages.book', $this->fetchData())->with('alert-success', 'books updated successfully.');
}
else
{
return redirect()->back()->with('alert-success',$error->getMessage());
}
}
更新页面
<form class="form-horizontal" method="POST" action="{{action('BookController@update', $id)}}" enctype="multipart/form-data">
{{ csrf_field() }}
<input type="hidden" name="_method" value="PATCH"/>
<div class="row" style="padding-left: 1%;">
<div class="col-md-4">
<div class="form-group">
<label>Book Name</label><span class="required">*</span>
<input type="text" value="{{$book->BookName}}" maxlength="100" minlength="3" autofocus="autofocus" autocomplete="off" required="required" name="NBookName" class="form-control"/>
</div>
</div>
<div class="col-md-4">
<div class="form-group" style="padding-left: 5%;">
<label>Book ID</label><span class="required">*</span>
<input type="text" value="{{$book->BookID}}" maxlength="10" minlength="1" autocomplete="off" required="required" name="NBookId" class="form-control"/>
</div>
</div>
<div class="col-md-4">
<div class="form-group" style="padding-left: 5%;">
<label>Unit Price</label><span class="required">*</span>
<input type="text" value="{{$book->BookUnitPrice}}" maxlength="5" required="required" autocomplete="off" runat="server" name="NBookUnitPrice" class="form-control" onkeypress="return decimalOnly(event)"/>
</div>
<div class="form-group" style="padding-left: 5%;">
<button type="submit" class="btn btn-primary">Update</button>
</div>
</div>
</div>
</form>
路线列表
// for books
Route::get('/book','BookController@create');
Route::post('/book','BookController@store');
Route::get('/book/{id}','BookController@edit');
Route::patch('/book/{id}', 'BookController@update');
我将路由方法从PUT
更新为PATCH
,它起作用了。现在数据正在更新。但是UPDATE中的成功消息无法显示。 请帮助!!!
请查看错误页面随附的图像。
答案 0 :(得分:0)
您要么必须更改
<input type="hidden" name="_method" value="PATCH"/>
到
<input type="hidden" name="_method" value="PUT"/>
或更改
Route::put('/book/{id}', 'BookController@update');
到
Route::patch('/book/{id}', 'BookController@update');