当前位置: 代码迷 >> 综合 >> yii2 模型验证规则
  详细解决方案

yii2 模型验证规则

热度:84   发布时间:2024-01-27 05:15:38.0

在数据模型中,根据需要加入以下代码,即可:

public function rules(){

    return [

        ['字段名','required','message'=>'提示信息','on'=>'场景名'],         //必填验证

        ['字段名','email','message'=>'提示信息','on'=>'场景名'],             //邮箱格式验证

        ['字段名','url','message'=>'提示信息','on'=>'场景名'],                 //网址格式验证

        ['字段名','match','pattern'=>'正则表达式'],                                   //网址格式验证

        ['字段名','captcha'],                                                                       //验证码验证

        ['字段名','safe'],                                                                              //安全不许验证

        ['repassword','compare','compareAttribue'=>'password'],         //跟某个属性相等

        ['字段名','string','length'=>[6,18]],                   //字符串长度验证,必须在6至18长度以内的

        ['字段名','unique'],                                            //值在本字段中的唯一性验证

        ['字段名','integer','max'=>'上限','min'=>'下线'],//整数验证

        ['字段名','number','max'=>'上限','min'=>'下线'],//数字验证

        ['字段名','double'],                                              //双精度浮点数验证

         ['字段名','in','range'=>[1,2,3]],                           //范围验证,必须在1,2,3以内的

         ['字段名','double'],                                            //双精度浮点数验证

         ['字段名','filter','filter'=>'trim'],                          //过滤,删除字段两边的空格

         ['字段名','exist','targetClass'=>'模型名'],             //字段名必须在模型名中存在

      ['字段名','file','extension'=>'jpg,png','maxSize'=>1024*1024*1024],  //允许上传以jpg,png为后缀,文件最大1024*1024*1024  Byte的文件

         ['字段名','myselfFun'],                                            //自定义函数验证

    ]

}

public function myselfFun($data){

        if(!$this->hasErrors){     

             if(self::find()->where(['username' =>$data])->one()){

                    return true;

            }  

        }else{

            $this->addError('账户不存在');

            return  false;

        }

}

//验证数据,并添加到数据库

public function add($data){

    //给模型载入数据,并进行验证

    if($this->load($data) && $this->validate()){

            $this->save(false);//save方法传入false,表示不再验证数据,避免重复验证

            return true;

    }else{

            return false;

    }

}