yii2类验证器不存在

时间:2015-02-04 04:47:20

标签: php yii2

类扩展验证器。

namespace app\myclass;
use yii\validators\Validator;
class telefoneValidator extends Validator
{
    public function validateAttribute($model, $attribute) {
        parent::validateAttribute($model, $attribute);
        if (!preg_match("^((8|\+7)[\- ]?)?(\(?\d{3}\)?[\- ]?)?[\d\- ]{7,10}$", $model->$attribute))  {
            $this->addError($model, $attribute, 'error');

        }
    }           
}

课程app \ models \用户规则验证/

namespace app\models;

    use Yii;
    use app\myclass\telefoneValidator;

        public function rules()
        {
            return [         
                ['telefone', 'telefoneValidator']
            ];
        }

当您开始收到错误异常'ReflectionException'时带有消息:

Class telefoneValidator does not exist

1 个答案:

答案 0 :(得分:4)

此声明适用于声明为相同类方法的内联验证器(例如,当您添加public function validateTelefone($attribute, $params) { ... }'validateTelephone'作为验证规则的第二个参数时)。

对于存储在不同类中的外部验证器,您应该提供带有名称空间的完整类名,如下所示:

use app\myclass\telefoneValidator;

...

['telefone', telefoneValidator::className()],

['telefone', 'app\myclass\telefoneValidator'],

附加说明:我建议将验证者名称更改为TelefoneValidator,因为它违反了框架类命名约定。