方法notallowedhttpexception对资源定义方法larvel -4


MethodNotAllowedHttpException on resource defined method Laravel-4

我创建了一个非常简单的表单,这样我就可以使用提交按钮而不是链接来打开编辑用户页面。使用链接工作得很好,但是表单按钮失败并产生一个MethodNotAllowedHttpException,即使方法("edit")在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() }}

谢谢。

当您执行Form::open()时,默认使用post请求方法。但是当您创建Route::resource()时,edit方法接受get请求。

要使它通过表单工作,您需要使用一个额外的参数打开它,像这样:

{{ Form::open(array('route' => array('users.edit',$user->id),
   'method' => 'get')) }}

您需要指向更新路由,而不是编辑。

{{ Form::open(array('route' => array('users.update', $user->id))) }}

edit路由用于显示视图,而update路由用于put/patch请求。

有关使用RESTful路由的更多信息,我建议查看http://laravel.com/docs/controllers#resource-controllers