我正在使用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...
}
}
答案 0 :(得分:0)
Ardent可以帮助您保持控制器清洁:https://github.com/laravelbook/ardent
“Ardent模型使用Laravel的内置Validator类。为模型定义验证规则很简单,通常在模型类中作为静态变量完成”