我想更新一篇文章。创建和删除帖子可以很好地工作,但每当我尝试使用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