yii,model内验证规则使用方法

先看一下例子: 

public function rules()    
{
        return array(
            array('username, password', 'required'),
            array('rememberMe', 'boolean'),
            array('password', 'authenticate'),
        );
    }
 
    public function authenticate($attribute,$params)
    {
        $this->_identity=new UserIdentity($this->username,$this->password);
        if(!$this->_identity->authenticate())
            $this->addError('password','错误的用户名或密码。');
    }

 

上述代码指定:username 和 password 为必填项, password 应被验证(authenticated),rememberMe 应该是一个布尔值。

 

rules() 返回的每个规则必须是以下格式:

 

array('AttributeList', 'Validator', 'on'=>'ScenarioList', ...附加选项)

 其中 AttributeList(特性列表) 是需要通过此规则验证的特性列表字符串,每个特性名字由逗号分隔;Validator(验证器) 指定要执行验证的种类;on 参数是可选的,它指定此规则应被应用到的场景列表; 附加选项是一个名值对数组,用于初始化相应验证器的属性值。

 

预定义的验证器别名的完整列表:

 

  • booleanCBooleanValidator 的别名, 确保特性有一个 CBooleanValidator::trueValue 或CBooleanValidator::falseValue 值。

  • captchaCCaptchaValidator 的别名,确保特性值等于 CAPTCHA 中显示的验证码。

  • compareCCompareValidator 的别名,确保特性等于另一个特性或常量。

  • emailCEmailValidator 的别名,确保特性是一个有效的Email地址。

  • defaultCDefaultValueValidator 的别名,指定特性的默认值。

  • existCExistValidator 的别名,确保特性值可以在指定表的列中可以找到。

  • fileCFileValidator 的别名,确保特性含有一个上传文件的名字。

  • filterCFilterValidator 的别名,通过一个过滤器改变此特性。

  • inCRangeValidator 的别名,确保数据在一个预先指定的值的范围之内。

  • lengthCStringValidator 的别名,确保数据的长度在一个指定的范围之内。

  • matchCRegularExpressionValidator 的别名,确保数据可以匹配一个正则表达式。

  • numericalCNumberValidator 的别名,确保数据是一个有效的数字。

  • requiredCRequiredValidator 的别名,确保特性不为空。

  • typeCTypeValidator 的别名,确保特性是指定的数据类型。

  • uniqueCUniqueValidator 的别名,确保数据在数据表的列中是唯一的。

  • urlCUrlValidator 的别名,确保数据是一个有效的 URL。

     

    下面我们列出了几个只用这些预定义验证器的示例:

     

    // 用户名为必填项
    array('username', 'required'),
    // 用户名必须在 3 到 12 个字符之间
    array('username', 'length', 'min'=>3, 'max'=>12),
    // 在注册场景中,密码password必须和password2一致。
    array('password', 'compare', 'compareAttribute'=>'password2', 'on'=>'register'),
    // 在登录场景中,密码必须接受验证。
    array('password', 'authenticate', 'on'=>'login'),
     

    大家可能比较郁闷一点,这么多预定义的验证类,他们的属性都有哪些呢?比如上面红色部门,我怎么确定每个验证器类要用到哪些?其实很简单。

    点开每一个类,都会看到类似图片上的东西,点击Properties,会看到验证器类的全部属性,只要看懂他们什么意思就行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值