输入表单的模型绑定

时间:2014-01-20 08:44:04

标签: php laravel laravel-4

我正在使用Laravel,在示例中他们似乎决定在控制器内部实现验证,而我根本不喜欢它。我想问的是,是否有某种bind方法可以将发布的输入字段绑定到我创建的对象上,这样我就可以确保我的控制器不会混乱。

我会尝试在代码中解释我想要的内容,我认为它会更加清晰。

我拥有什么

public function postRegister() {
    $validation = Validator::make(Input::all(), array(
                'email' => 'required|email',
                'password' => 'required|min:6',
                'name' => 'required|alpha',
                'gender' => 'required|in:male,female'
    ));

    if ($validation->fails()) {
        Input::flashExcept('password');
        return Redirect::to('register')->withErrors($validation)->withInput();
    }

    // Register user...
}

我想拥有什么

class UserRegisterDto {
    public $email;
    public $password;
    public $name;
    public $gender;

    protected $errors;

    public function isValid() {
        // Validate it here, set errors if there are some
        return $validator->isValid();
    }

    public function getErrors() {
        return $this->errors;
    }
}

public function postRegister() {
    $user = Input::bind('UserRegisterDto'); // This is made-up function, I wonder if something like this exists

    if ($user->isValid()) {
        // Register user...
    }
}

1 个答案:

答案 0 :(得分:0)

Ardent可以帮助您保持控制器清洁:https://github.com/laravelbook/ardent

“Ardent模型使用Laravel的内置Validator类。为模型定义验证规则很简单,通常在模型类中作为静态变量完成”