获取Symfony \ Component \ HttpKernel \ Exception \ MethodNotAllowedHttpException

时间:2014-09-25 13:48:36

标签: symfony laravel-4

我发送处理输入数据并更新记录的PUT请求,但我得到了上述响应。然而,问题似乎不是路线,因为如果我在dd($user)行之后$user = User::whereId($id)->firstOrFail();,我会正确地返回对象。

然而,当需要验证它时,它会抛出此错误。

# routes
Route::resource('users', 'UsersController', ['only' => ['index', 'show', 'update']]);

# api call
PUT /users/2

# controller
public function update($id)
{

    $user = User::whereId($id)->firstOrFail();

    $input = Input::all();

    $this->userForm->validate($input);

    $user->fill($input)->save();

    return $user->toJson();

}

# userForm class

<?php namespace Olp\Forms;

use Laracasts\Validation\FormValidator;

class UserForm extends FormValidator {

    protected $rules = [
        'email'         => 'required|email|unique:users',
        'password'      => 'required',
        'password_confirmation' => 'required|same:password',
        'firstname'     => 'required',
        'lastname'      => 'required',
        'schoolname'    => 'required',
        'address1'      => 'required',
        'address2'      => 'required',
        'postcode'      => 'required',
        'city'          => 'required'
    ];
}

并在我的UserController中:

use Olp\Forms\UserForm;

class UsersController extends \BaseController {

    function __construct(UserForm $userForm)
    {
        $this->userForm = $userForm;
    }

1 个答案:

答案 0 :(得分:0)

我不是Laravel的人,但快速检查他们的文档表明Resource Controllers支持PUT以及其他HTTP动词。

我无法弄清楚如何为任意操作添加HTTP动词支持,但this表示您可以命名一个控制器操作,前缀为它响应的动词

public function putUpdate($id)