🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
> 在开发应用程序时,永远不要相信从用户接收到的数据。为了使用模式来验证用户的输入,应该调用 yii\base\Model::validate() 方法。如果验证成功,它返回一个布尔值。如果有错误发生,可以从 yii\base\Model::$errors 得到它们。 [TOC] #### required : 必须值验证属性 ~~~ [['字段名'],required,'requiredValue'=>'必填值','message'=>'提示信息'] #说明:CRequiredValidator 的别名, 确保了特性不为空. ~~~ #### email : 邮箱验证 ~~~ ['email', 'email'] #说明:CEmailValidator的别名,确保了特性的值是一个有效的电邮地址. ~~~ #### match : 正则验证 ~~~ [['字段名'],match,'pattern'=>'正则表达式','message'=>'提示信息']; 如: ['mobile','match','pattern'=>'/^1\d{10}$/','message'=>'手机号格式不正确'], [['字段名'],match,'not'=>ture,'pattern'=>'正则表达式','message'=>'提示信息'] /*正则取反*/ #说明:CRegularExpressionValidator 的别名, 确保了特性匹配一个正则表达式. ~~~ #### url : 网址 ~~~ ['website', 'url', 'defaultScheme' => 'http']; #说明:CUrlValidator 的别名, 确保了特性是一个有效的路径. ~~~ #### captcha : 验证码 ~~~ ['verificationCode', 'captcha'] #说明:CCaptchaValidator 的别名,确保了特性的值等于 CAPTCHA 显示出来的验证码. ~~~ #### safe : 安全 ~~~ ['description', 'safe'] ~~~ #### compare : 比较 ~~~ ['age', 'compare', 'compareValue' => 30, 'operator' => '>='] #说明:compareValue(比较常量值) - operator(比较操作符) #说明:CCompareValidator 的别名,确保了特性的值等于另一个特性或常量. ~~~ #### default : 默认值 ~~~ ['age', 'default', 'value' => null] #说明:CDefaultValueValidator 的别名, 为特性指派了一个默认值. ~~~ #### exist : 存在 ~~~ [['product_type_id'],'exist','targetClass' => ProductType::className(),'targetAttribute' => 'id','message'=>'请选择商品分类!'] #说明:CExistValidator 的别名,确保属性值存在于指定的数据表字段中. ~~~ #### file : 文件 ~~~ ['primaryImage', 'file', 'extensions' => ['png', 'jpg', 'gif'], 'maxSize' => 1024*1024*1024] #说明:CFileValidator 的别名, 确保了特性包含了一个上传文件的名称. ~~~ #### filter : 滤镜 ~~~ [['username', 'email'], 'filter', 'filter' => 'trim', 'skipOnArray' => true] #说明:CFilterValidator 的别名, 使用一个filter转换属性. ~~~ #### in : 范围 ~~~ ['level', 'in', 'range' => [1, 2, 3]] #说明:CRangeValidator 的别名,确保了特性出现在一个预订的值列表里. ~~~ #### unique : 唯一性 ~~~ ['username', 'unique'] #说明:CUniqueValidator 的别名,确保了特性在数据表字段中是唯一的. ~~~ #### integer : 整数 ~~~ ['age', 'integer'] ~~~ #### number : 数字 ~~~ ['salary', 'number'] ~~~ #### double : 双精度浮点型 ~~~ ['salary', 'double'] ~~~ #### date : 日期 ~~~ [['from', 'to'], 'date'] ~~~ #### string : 字符串 ~~~ ['username', 'string', 'length' => [4, 24]] ~~~ #### boolean : 是否为一个布尔值 ~~~ ['字段名', 'boolean', 'trueValue' => true, 'falseValue' => false, 'strict' => true] #说明:CBooleanValidator 的别名 ~~~ #### image :是否为有效的图片文件 ~~~ ['primaryImage','image', 'extensions' => 'png, jpg,jpeg','minWidth' => 100,'maxWidth' => 1000,'minHeight' => 100,'maxHeight' => 1000,] ~~~ #### custom:自定义验证 ~~~ ['mobile', 'checkMobile'] //验证手机号码 public function checkMobile(){ $reg = '/^1\d{10}$/'; if($this->mobile && !preg_match($reg, $this->mobile)){ $this->addError('mobile', Yii::t('common','Mobile Is Invalid')); return false; } } //也可以用正则验证器替代 ['mobile','match','pattern'=>'/^1\d{10}$/','message'=>'手机号格式不正确'], ~~~ #### 修改验证器默认message英文提示 ~~~ [['email','username','pwd','nickname'],'required'] //当使用这样的验证规则,如果我们要对其进行每个字段进行message提示的时候,就得拆分开,单独设置各自的message,这样写起来复杂而又费事。最简单的方式就是写成以下这样 [['email','username','pwd','nickname'],'required','message'=>'{attribute} 不能为空!'] //当然,如果还想再简单一点,就直接修改\vendor\yiisoft\yii2\validators\下各自的验证器,在各自的init方法中把英文的提示改为中文的就可以了,我觉得这样的方式是最方面省事的。仁者见仁智者见智吧。 ~~~