我创建了一个非常简单的表单,以便我可以使用提交按钮而不是链接来打开编辑用户页面。使用链接工作正常,但表单按钮失败并产生一个MethodNotAllowedHttpException,即使方法("编辑")在UsersController资源中完美定义,否则工作正常。
路线:
Route::resource('users','UsersController');
UsersController:
public function edit($id)
{
$user = $this->user->find($id);
return View::make('users.edit')->with('user',$user);
}
show.blade.php:
<!-- This works fine: -->
{{ link_to_route('users.edit', ("Edit: " .$user->first_name." ".$user->last_name), $user->id) }}
<!-- This doesn't work, and yields the Method Not Allowed exception: -->
{{ Form::open(array('route' => array('users.edit',$user->id))) }}
{{ Form::submit('Edit User', array('class'=>'button')) }}
{{ Form::close() }}
感谢。
答案 0 :(得分:1)
执行Form::open()
时,默认使用post
请求方法。但是,当您创建Route::resource()
时,edit
方法会收到get
个请求。
要使其在表单中运行,您需要使用其他参数打开它,如下所示:
{{ Form::open(array('route' => array('users.edit',$user->id),
'method' => 'get')) }}
答案 1 :(得分:0)
您需要指向更新路线,而不是编辑。
{{ Form::open(array('route' => array('users.update', $user->id))) }}
编辑路径用于显示视图,而更新用于put / patch请求。
有关使用RESTful路由的更多信息,我建议您查看http://laravel.com/docs/controllers#resource-controllers