yii自定义验证

  • 自定义验证类
    class BaseModel extends Model {
      public function rules() {
            return [
                ['obj', ContentSecurityValidator::class],
            ];
        }
      public function exec() {
            if (!$this->validate()) {
                return [
                    'errors' => $this->errors
                ];
            }
       }
      public function attributeLabels() {
            return [
                'obj' => '标签',
            ];
        }
    }
    
    /**
    * 自定义验证类
    */
    class BaseValidator extends Validator {
    
         /**
         * 必须要实现该方法
         * @param yiiaseModel $model
         * @param string $attribute 参数名
         * @return bool
         */
        public function validateAttribute($model, $attribute) {
            $attributeValue = $model->$attribute;//获取$model里面的参数的值
            $attributes = $model->attributes;//获取model里面的参数数组
            $attributeLabels = $model->attributeLabels();//获取model里面的已经设置好参数对应标签
            
        }
    }
  • 自定义验证方法
    class BaseModel extends Model {
      public function rules() {
            return [
                ['obj', 'validate'],
            ];
        }
      public function exec() {
            if (!$this->validate()) {
                return [
                    'errors' => $this->errors
                ];
            }
       }
      public function attributeLabels() {
            return [
                'obj' => '标签',
            ];
        }
      /**
       * 自定义方法
       */
      public function validate($attribute) {
            $attributeValue = $this->$attribute;//获取$model里面的参数的值
            $attributes = $this->attributes;//获取model里面的参数数组
            $attributeLabels = $this->attributeLabels();//获取model里面的已经设置好参数对应标签
            
        }
    }
    
        
  • 不刷新,通过切换select的按钮,面对不同场景时,设置某些必填项
    public function rules() {
            return [
                [['email', 'phone'], "requiredValidators", 'skipOnEmpty' => false, 'skipOnError' => false],
            ];
        }
    
        public function requiredValidators($attribute) {
            if ($this->typeId == 'register') {
                $isAttrEmpty = !$this->$attribute || empty($this->$attribute) || $this->$attribute === '' || $this->$attribute == null;
                if ($isAttrEmpty)
                    $this->addError($attribute, $this->attributeLabels()[$attribute] . '不能为空');
            }
        }
    
        public function attributeLabels() {
            return [
                'email'=>'邮箱',
                'phone'=>'手机'
            ]
        }            
原文地址:https://www.cnblogs.com/fatRabbit-/p/11471032.html