在一個model的rules方法中寫規則,
public function rules() { return [ [['title','description','keywords'],'strip_tags'] ]; }
這個按理說應該是想trim函數一樣,對內容進行過濾,實際上卻報錯
ReflectionException
Class strip_tags does not exist
為何將trim當成函數,卻將strip_tags當成一個類,這是怎麼回事?
回複內容:
在一個model的rules方法中寫規則,
public function rules() { return [ [['title','description','keywords'],'strip_tags'] ]; }
這個按理說應該是想trim函數一樣,對內容進行過濾,實際上卻報錯
ReflectionException
Class strip_tags does not exist
為何將trim當成函數,卻將strip_tags當成一個類,這是怎麼回事?
並沒有把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', ];
父類 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', ];