rules() as $rule) { if ($rule instanceof \yii\validators\Validator) { $validators->append($rule); } elseif (is_array($rule) && isset($rule[0], $rule[1])) { // attributes, validator type if(array_key_exists($rule[1], Validator::$extensionRule)){ // 启用扩展规则 $otherParams = array_merge(['validateMethod'=>$rule[1]], array_slice($rule, 2)); $validator = \yii\validators\Validator::createValidator('\common\helpers\Validator', $this, (array) $rule[0], $otherParams); } else { $validator = \yii\validators\Validator::createValidator($rule[1], $this, (array) $rule[0], array_slice($rule, 2)); } $validators->append($validator); } else { throw new InvalidConfigException('Invalid validation rule: a rule must specify both attribute names and validator type.'); } } return $validators; } }