我想更新一篇文章。創建和刪除帖子可以很好地工作,但每當我嘗試使用PATCH表單進行更新時,它都會失敗,並提供MethodNotAllowedHttpException
。Laravel 5.2 MethodNotAllowedHttpException帶有修補程序的路由:: resource
我routes.php文件:
...
Route::resource('posts', 'PostsController');
...
這給了我可能的路線如下表(CSS中粘貼保持可讀性):
| GET|HEAD | posts | posts.index | App\Http\Controllers\[email protected]
| POST | posts | posts.store | App\Http\Controllers\[email protected]
| GET|HEAD | posts/create | posts.create | App\Http\Controllers\[email protected]
| GET|HEAD | posts/{posts} | posts.show | App\Http\Controllers\[email protected]
| DELETE | posts/{posts} | posts.destroy | App\Http\Controllers\[email protected]
| PUT|PATCH | posts/{posts} | posts.update | App\Http\Controllers\[email protected]
| GET|HEAD | posts/{posts}/edit | posts.edit | App\Http\Controllers\[email protected]
我edit.blade.php(URL =本地主機:8000 /職位/ 1 /編輯):
{!! Form::model($post, ['method' => 'PATCH', 'action' => ['[email protected]', $post]]) !!}
@include('posts/_form', array('submitText' => 'Update'))
{!! Form::close() !!}
我的PostsController:
public function update(Request $request, Post $post) {
$post->update($request->all());
return Redirect::route('posts.index')->with('message_succes', 'Post updated');
}
無論我嘗試,它失敗與
MethodNotAllowedHttpException RouteCollection-> methodNotAllowed(陣列( 'GET', 'HEAD', 'POST'))在 RouteCollection.php線206
查看錶格的HTML源代碼,並正確插入標記。 將PATCH更改爲在表單中發佈時,它將使用商店功能並創建一個新帖子。我需要做些什麼來更新帖子?
你應該只傳遞一個表單動作的id。你用'$ post'。由於您沒有共享'edit()'方法,我們不知道'$ post'變量中返回的是什麼。如果$ post是一個集合,使用'['PostController @ update',$ post-> id]'。如果不行,請分享'edit()'方法的代碼。 – smartrahat
@smartrahat是的,你是對的。已經發現我確實發佈了完整的對象。現在正在工作。 – Trekdrop