Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel:模型内的验证。多个验证规则_Php_Validation_Laravel_Model - Fatal编程技术网

Php Laravel:模型内的验证。多个验证规则

Php Laravel:模型内的验证。多个验证规则,php,validation,laravel,model,Php,Validation,Laravel,Model,如何将多个验证规则添加到模型中 我已经创建了一个BaseModel,其中BaseModel扩展得很有说服力。 我的其他模型扩展了BaseModel 模型/基本模型 class BaseModel extends Eloquent { public $errors; public function validate($data) { $validation = Validator::make($data, static::$rules); if($validation-&g

如何将多个验证规则添加到模型中

我已经创建了一个BaseModel,其中BaseModel扩展得很有说服力。 我的其他模型扩展了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;
}
public function validate($data, $rules) {
}

模型/用户

    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成为一个变量,它通过了验证函数,但看起来并不干净。 乙二醇

模型/基本模型

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;
}
public function validate($data, $rules) {

我通过将
$rules
存储在我的models方法中解决了这个问题。在本例中,我正在验证用户更新。我使用这个类中的validate类方法。事情可以组织得更好,但我正在努力

这是我的
EloquentUserRepository
User
模型中的代码,但我使用存储库

雄辩的陈述:

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();
}

这非常有效,可以保持我的控制器干净,并在有意义的地方显示我的验证规则。

也许您可以尝试各种类型的验证功能
例如:$User->validateUpdate然后在用户模型中

private function validateUpdate($data){
    $validator = Validator::make($data, $this->updateRules);
    if($validator->passes()) {
         return true;
    } else {
        $this->errors = $validator->errors();
        return false;
    }
}

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

登录时进行验证不是一项模型作业。把这件事留给其他人去做,因为模型应该只负责(若你们愿意的话)创建一个新记录。验证登录凭据是另一回事,实际上您根本不需要验证。除非有你想分享的原因?我不是在验证登录,我在尝试有多个验证规则。