gpt4 book ai didi

php - Laravel:模型内验证。多重验证规则

转载 作者:行者123 更新时间:2023-12-05 07:58:46 25 4
gpt4 key购买 nike

如何向模型添加多个验证规则?

我创建了一个 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 的 EloquentUserRepositoryUser 模型的代码,但我使用的是存储库。

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 保持干净,并在有意义的地方显示我的验证规则。

关于php - Laravel:模型内验证。多重验证规则,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23554771/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com