登录

php - yii2用户数据验证的问题

在一个model的rules方法中写规则,

public function rules()
    {
        return [
            [['title','description','keywords'],'strip_tags']
        ];
    }

这个按理说应该是想trim函数一样,对内容进行过滤,实际上却报错
ReflectionException
Class strip_tags does not exist
为何将trim当成函数,却将strip_tags当成一个类,这是怎么回事?

# PHP
PHP中文网PHP中文网2122 天前505 次浏览

全部回复(2) 我要回复

  • 天蓬老师

    天蓬老师2017-04-10 16:54:10

    并没有把trim当做函数。

        public static $builtInValidators = [
            'boolean' => 'yii\validators\BooleanValidator',
            'captcha' => 'yii\captcha\CaptchaValidator',
            'compare' => 'yii\validators\CompareValidator',
            'date' => 'yii\validators\DateValidator',
            'default' => 'yii\validators\DefaultValueValidator',
            'double' => 'yii\validators\NumberValidator',
            'each' => 'yii\validators\EachValidator',
            'email' => 'yii\validators\EmailValidator',
            'exist' => 'yii\validators\ExistValidator',
            'file' => 'yii\validators\FileValidator',
            'filter' => 'yii\validators\FilterValidator',
            'image' => 'yii\validators\ImageValidator',
            'in' => 'yii\validators\RangeValidator',
            'integer' => [
                'class' => 'yii\validators\NumberValidator',
                'integerOnly' => true,
            ],
            'match' => 'yii\validators\RegularExpressionValidator',
            'number' => 'yii\validators\NumberValidator',
            'required' => 'yii\validators\RequiredValidator',
            'safe' => 'yii\validators\SafeValidator',
            'string' => 'yii\validators\StringValidator',
            'trim' => [
                'class' => 'yii\validators\FilterValidator',
                'filter' => 'trim',
                'skipOnArray' => true,
            ],
            'unique' => 'yii\validators\UniqueValidator',
            'url' => 'yii\validators\UrlValidator',
            'ip' => 'yii\validators\IpValidator',
        ];

    回复
    0
  • 怪我咯

    怪我咯2017-04-10 16:54:10

    父类 yii/base/Model::createValidators,楼主可以具体看下这个方法,生成验证器方法。
    遍历rules,判断$rule[1],也就相当于'trim','strip_tags'这些字段
    1、是否是匿名函数($rule instanceof \Closure)或者是否是子类的方法
    2、判断是否是已经存在的验证器

    public static $builtInValidators = [
            'boolean' => 'yii\validators\BooleanValidator',
            'captcha' => 'yii\captcha\CaptchaValidator',
            'compare' => 'yii\validators\CompareValidator',
            'date' => 'yii\validators\DateValidator',
            'default' => 'yii\validators\DefaultValueValidator',
            'double' => 'yii\validators\NumberValidator',
            'each' => 'yii\validators\EachValidator',
            'email' => 'yii\validators\EmailValidator',
            'exist' => 'yii\validators\ExistValidator',
            'file' => 'yii\validators\FileValidator',
            'filter' => 'yii\validators\FilterValidator',
            'image' => 'yii\validators\ImageValidator',
            'in' => 'yii\validators\RangeValidator',
            'integer' => [
                'class' => 'yii\validators\NumberValidator',
                'integerOnly' => true,
            ],
            'match' => 'yii\validators\RegularExpressionValidator',
            'number' => 'yii\validators\NumberValidator',
            'required' => 'yii\validators\RequiredValidator',
            'safe' => 'yii\validators\SafeValidator',
            'string' => 'yii\validators\StringValidator',
            'trim' => [
                'class' => 'yii\validators\FilterValidator',
                'filter' => 'trim',
                'skipOnArray' => true,
            ],
            'unique' => 'yii\validators\UniqueValidator',
            'url' => 'yii\validators\UrlValidator',
        ];
    

    回复
    0
  • 取消回复发送