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

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

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

https://stackoverflow.com/questions/23554771/

相关文章:

r - 警告 : replacing previous import ‘head’ when loa

unix - 2个unix文件怎么会有相同的inode,但是inode的引用计数是1?

.net - 每个文件只执行一个类

ios - 解码Code128条码?

sql - 在 NLTK 中将英语转换为 SQL

jquery - Select2 无限滚动组

sorting - lucene.net,文档提升不起作用

python - 具有多个 worker 的 gunicorn 中的变量访问

hibernate - hql 在右外连接上获取

ruby-on-rails - Rails - routes.rb - 滚动到根页面的 anchor