zoukankan      html  css  js  c++  java
  • Yii CModel中rules验证规则

    一、案例如下

    array(
     array(‘username’, ‘required’),
     array(‘username’, ‘length’, ‘min’=>3, ‘max’=>12),
     array(‘password’, ‘compare’, ‘compareAttribute’=>’password2′, ‘on’=>’register’),
     array(‘password’, ‘authenticate’, ‘on’=>’login’),
    
      array(‘Price’,’numerical’, ‘integerOnly’=>true),
    );
    public function rules()
    {
      return array(
          array(‘title, content, status’, ‘required’),
          array(‘title’, ‘length’, ‘max’=>128),
          array(‘status’, ‘in’, ‘range’=>array(1,2,3)),
          array(‘tags’, ‘match’, ‘pattern’=>’/^[ws,]+$/’,
              ‘message’=>’Tags can only contain word characters.’),
          array(‘tags’, ‘normalizeTags’),
          array(‘title, status’, ‘safe’, ‘on’=>’search’),
      );
    }

    二、预定义完整列表

    boolean : CBooleanValidator 的别名, 确保属性的值是CBooleanValidator::trueValue 或CBooleanValidator::falseValue .
    captcha : CCaptchaValidator 的别名,确保了特性的值等于 CAPTCHA 显示出来的验证码.
    compare : CCompareValidator 的别名, 确保了特性的值等于另一个特性或常量.
    email : CEmailValidator 的别名,确保了特性的值是一个有效的电邮地址.
    default : CDefaultValueValidator 的别名, 为特性指派了一个默认值.
    exist : CExistValidator 的别名, 确保属性值存在于指定的数据表字段中.
    file : CFileValidator 的别名, 确保了特性包含了一个上传文件的名称.
    filter : CFilterValidator 的别名, 使用一个filter转换属性.
    in : CRangeValidator 的别名, 确保了特性出现在一个预订的值列表里.
    length : CStringValidator 的别名, 确保了特性的长度在指定的范围内.
    match : CRegularExpressionValidator 的别名, 确保了特性匹配一个正则表达式.
    numerical : CNumberValidator 的别名, 确保了特性是一个有效的数字.
    required : CRequiredValidator 的别名, 确保了特性不为空.
    type : CTypeValidator 的别名, 确保了特性为指定的数据类型.
    unique : CUniqueValidator 的别名, 确保了特性在数据表字段中是唯一的.
    url : CUrlValidator 的别名, 确保了特性是一个有效的路径 

    三、继承的方法

    yii验证rulesit 分类: Yii yii的rules验证 cValidator主要属性 attributes ,builtInValidators,enableClientValidation,message,on,safe,skipOnError
    
    经常用到的属性有 attributes,builtInvalidators,message,on这四个
    
    下面是对应的验证类
    
    required: CRequiredValidator
    
    filter: CFilterValidator
    
    match: CRegularExpressionValidator
    
    email: CEmailValidator
    
    url: CUrlValidator
    
    unique: CUniqueValidator
    
    compare: CCompareValidator
    
    length: CStringValidator
    
    in: CRangeValidator
    
    numerical: CNumberValidator
    
    captcha: CCaptchaValidator
    
    type: CTypeValidator
    
    file: CFileValidator
    
    default: CDefaultValueValidator
    
    exist: CExistValidator
    
    boolean: CBooleanValidator
    
    date: CDateValidator
    
    safe: CSafeValidator
    
    unsafe: CUnsafeValidator
    1、CRequiredValidator – 必须值验证属性
    
    requiredValue-mixed-所需的值
    
    strict-boolean-是否比较严格
    
    实例: array(‘username’, ‘required’), 不能为空
    
    array(‘username’, ‘required’, ‘requiredValue’=>’lh’,’message’=> ‘usernmae must be lh’), 这个值必须为lh,如果填其他值还是会验证不过
    
    array(‘username’, ‘required’, ‘requiredValue’=>’lh’, ‘strict’=>true), 严格验证 还可以在后面加 ‘message’=>”,’on’=>这些
    
    2、CFilterValidator 过滤验证属性
    
    filter – 方法名 (调用用户自己定义的函数)
    
    实例:
    
    array(‘username’, ‘test’) function test() { $username = $this->username; if($username != ‘lh’){ $this->addError(‘username’, ‘username must be lh’); } }
    
    使用这个方法如果你还在array里面写message=>”,给出的提示信息还是你的test里面的。也就是以test里面的错误信息为准
    
    3、CRegularExpressionValidator -
    
    正则验证属性allowEmpty – 是否为空(默认true)
    
    not-是否反转的验证逻辑(默认false) pattern – 正则表达式匹配实例:
    
    // 匹配a-z array(‘username’, ‘match’, ‘allowEmpty’=>true, ‘pattern’=>’/[a-z]/i’,’message’=>’必须为字母’),
    
    // 匹配不是a-z array(‘username’, ‘match’, ‘allowEmpty’=>true, ‘not’=>true, ‘pattern’=>’/[a-z]/i’,’message’=>’必须不是字母’),
    
    4、CEmailValidator –邮箱验证属性:
    
    allowEmpty – 是否为空
    
    allowName – 是否允许在电子邮件地址的名称
    
    checkMx – 是否检查电子邮件地址的MX记录
    
    checkPort – 是否要检查端口25的电子邮件地址
    
    fullPattern – 正则表达式,用来验证电子邮件地址与名称的一部分
    
    pattern – 正则表达式,
    
    用来验证的属性值实例: array(‘username’, ‘email’, ‘message’=>’必须为电子邮箱’, ‘pattern’=>’/[a-z]/i’),
    
    5、CUrlValidator – url验证属性:
    
    allowEmpty – 是否为空
    
    defaultScheme – 默认的URI方案
    
    pattern – 正则表达式
    
    validSchemes – 清单应视为有效的URI计划。
    
    实例:
    
    array(‘username’, ‘url’, ‘message’=>’must url’),
    
    array(‘username’, ‘url’, ‘defaultScheme’=>’http://www.baidu.com’),
    
    6、CUniqueValidator – 唯一性验证属性:
    
    allowEmpty – 是否为空
    
    attributeName – 属性名称
    
    caseSensitive – 区分大小写
    
    className – 类名
    
    criteria – 额外的查询条件
    
    实例:
    
    array(‘username’, ‘unique’, ‘message’=>’该记录存在’),
    
    array(‘username’, ‘unique’, ‘caseSensitive’=>false, ‘message’=>’该记录存在’),
    
    7、CCompareValidator – 比较验证属性:
    
    allowEmpty – 是否为空
    
    compareAttribute – 需要比较的属性
    
    compareValue -比较的值
    
    operator – 比较运算符
    
    strict – 严格验证(值和类型都要相等)
    
    实例: // 与某个值比较 array(‘username’, ‘compare’, ‘compareValue’=>’10′, ‘operator’=>’>’, ‘message’=>’必须大于10′),
    
    // 与某个提交的属性比较 array(‘username’, ‘compare’, ‘compareAttribute’=& gt;’password’, ‘operator’=>’>’, ‘message’=>’必须大于password’),
    
    8、CStringValidator – 字符串验证属性:
    
    allowEmpty – 是否为空
    
    encoding – 编码
    
    is – 确切的长度
    
    max – 最大长度
    
    min – 最小长度
    
    tooLong – 定义值太大的错误
    
    tooShort – 定义最小长度的错误
    
    实例: array(‘username’, ‘length’, ‘max’=>10, ‘min’=>5, ‘tooLong’=>’太长了’, ‘tooShort’=>’太短了’),
    
    array(‘username’, ‘length’, ‘is’=>5, ‘message’=>’长度必须为5′),
    
    9、CRangeValidator – 在某个范围内属性:
    
    allowEmpty – 是否为空
    
    not – 是否反转的验证逻辑。
    
    range – array范围
    
    strict – 严格验证(类型和值都要一样)
    
    实例: array(‘username’, ‘in’, ‘range’=>array(1,2,3,4,5), ‘message’=>’must in 1 2 3 4 5′),
    
    array(‘username’, ‘in’, ‘not’=>true, ‘range’=>array(1,2,3,4,5), ‘message’=>’must not in 1 2 3 4 5′),
    
    10、CNumberValidator – 数字验证属性:
    
    allowEmpty – 是否为空
    
    integerOnly – 整数
    
    integerPattern – 正则表达式匹配整数
    
    max – 最大值
    
    min – 最小值
    
    numberPattern – 匹配号码
    
    tooBig – 值太大时的错误提示
    
    tooSmall – 值太小时的错误提示
    
    实例: array(‘username’, ‘numerical’, ‘integerOnly’=>true, ‘message’=>’must be int’),
    
    array(‘username’, ‘numerical’, ‘integerOnly’=>true, ‘message’=>’must be int’, ‘max’=>100, ‘min’=>10, ‘tooBig’=>’is too big’, ‘tooSmall’=>’is too small’),
    
    11、CCaptchaValidator – 验证码验证属性:
    
    allowEmpty – 是否为空
    
    caseSensitive – 区分大小写
    
    12、CTypeValidator – 类型验证属性:
    
    allowEmpty – 是否为空
    
    dateFormat – 日期应遵循的格式模式(‘MM/dd/yyyy’)
    
    datetimeFormat – 日期时间应遵循的格式模式(‘MM/dd/yyyy hh:mm’)
    
    timeFormat – 时间应遵循的格式模式(‘hh:mm’)
    
    type – 类型 ‘string’, ‘integer’, ‘float’, ‘array’, ‘date’, ‘time’ and ‘datetime’
    
    实例: array(‘username’, ‘type’, ‘dateFormat’=>’MM/dd/yyyy’, ‘type’=>’date’),
    
    13、CFileValidator – 文件验证属性:
    
    allowEmpty – 是否为空
    
    maxFiles – 最大文件数
    
    maxSize – 文件的最大值
    
    minSize – 最小值
    
    tooLarge – 太大时的错误信息
    
    tooMany – 太多时的错误信息
    
    tooSmall – 太小时的错误信息
    
    types – 允许的文件扩展名
    
    wrongType – 扩展名错误时给出的错误信息
    
    14、CDefaultValueValidator – 默认值属性:
    
    setOnEmpty – 设置为空
    
    value – 默认值
    
    实例: array(‘username’, ‘default’, ‘setOnEmpty’=>true, ‘value’=>’lh’),
    
    15、CExistValidator – 是否存在属性:
    
    allowEmpty = 是否为空
    
    attributeName – 属性名称
    
    className – 类名
    
    criteria – 标准
    
    16、CBooleanValidator – 布尔类型验证属性:
    
    allowEmpty – 是否为空
    
    falseValue – 错误状态的值
    
    strict – 严格验证
    
    trueValue – 真实状态的值
    
    实例: array(‘username’, ‘boolean’, ‘trueValue’=>1, ‘falseValue’=>-1, ‘message’=>’the value must be 1 or -1′),
    
    17、CDateValidator – 日期验证属性:
    
    allowEmpty – 是否为空
    
    format – 日期值应遵循的格式模式
    
    timestampAttribute – 接收解析结果的属性名称
    
    实例: array(‘username’, ‘date’, ‘format’=>’MM-dd-yyyy’,’message’=>’must be MM-dd-yyyy’),
  • 相关阅读:
    原创:Qt自定义拖放
    看下最近公司的招聘需求
    leveldb阅读心得
    Relationship between the FIX Protocol's OrdID, ClOrdID, OrigClOrdID?
    Wait Functions
    全局变量与单例模式
    Asynchronous I/O
    QuickFix MsgHandler
    第一个Java程序
    (原創) Function Pointer、Delegate和Function Object (C/C++) (template) (.NET) (C#)
  • 原文地址:https://www.cnblogs.com/lccjob/p/4881227.html
Copyright © 2011-2022 走看看