如何向模型添加多个验证规则?
我创建了一个 BaseModel,其中 BaseModel 扩展了 Eloquent。 我的其他模型扩展了 BaseModel。
模型/基础模型
class BaseModel extends Eloquent {
public $errors;
public function validate($data) {
$validation = Validator::make($data, static::$rules);
if($validation->passes()) {
return true;
}
$this->errors = $validation->messages();
return false;
}
模型/用户
protected static $rules = [
'email_address' => "required|email|unique:users,email_address",
'first_name' => "required",
'last_name' => "required",
'password' => "required|min:6|same:confirm_password",
'confirm_password' => "required:min:6|same:password",
];
以上规则适用于注册页面。
现在我的登录页面也将通过用户模型。
它应该验证电子邮件地址和密码。
是否可以向模型添加多个验证规则。
我确信我可以让 $rules 成为一个通过验证函数的变量,但它看起来并不干净。 例如
模型/基础模型
public function validate($data, $rules) {
最佳答案
我通过将 $rules
一起存储在我的模型方法中解决了这个问题。在此示例中,我正在验证用户更新。我使用此类中的验证类方法。事情可以组织得更好,但我正在努力。
这是来 self 的 EloquentUserRepository
或 User
模型的代码,但我使用的是存储库。
EloquentUserRepository:
public function update($user) {
$rules = array(
"email" => "required|email",
"userrole" => "required"
)
if($this->validate(Input::all(), $rules)) {
$user->save();
return true;
} else {
return false;
}
}
private function validate($data, $rules) {
$validator = Validator::make($data, $rules);
if($validator->passes()) {
return true;
} else {
$this->errors = $validator->errors();
return false;
}
}
public function errors() {
return $this->errors()->all();
}
这很好用,让我的 Controller 保持干净,并在有意义的地方显示我的验证规则。
https://stackoverflow.com/questions/23554771/