首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

yii rules 印证详解

2013-07-09 
yii rules 验证详解public?function?rules()??{??????return?array(??????????array(project_id,?type_id

yii rules 验证详解

  1. public?function?rules()??
  2. {??
  3. ????return?array(??
  4. ????????array('project_id,?type_id,?status_id,?owner_id,?requester_id,',?'numerical',?'integerOnly'=>true),??
  5. ????????array('name',?'length',?'max'=>256),??
  6. ????????array('description',?'length',?'max'=>2000),??
  7. ????????array('create_time,create_user_id,update_user_id,?update_time',?'safe'),??
  8. ????????array('id,?name,?description,?project_id,?type_id,?status_id,?owner_id',?'on'=>'search'),??
  9. ????);??
  10. }??
  11. ??
  12. //required:?必填??
  13. array('title,content','required'),??
  14. ??
  15. //match:?正则表达式验证??
  16. array('birthday',?'match',?'pattern'=>'%^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$%',?'allowEmpty'=>true,?'message'=>'生日必须是年-月-日格式'),??
  17. ??
  18. //email:邮箱格式验证??
  19. array('user_mail',?'email'),???
  20. ??
  21. //url:URL格式验证??
  22. array('user',?'url'),???
  23. ??
  24. //unique:唯一性验证??
  25. array('username',?'unique','caseSensitive'=>false,'className'=>'user','message'=>'用户名"{value}"已经被注册,请更换'),??
  26. //caseSensitive?定义大小写是否敏感??
  27. ??
  28. //compare:一致性验证??
  29. array('repassword',?'compare',?'compareAttribute'=>'password','message'=>'两处输入的密码并不一致'),??
  30. ??
  31. //length:长度验证???
  32. ??
  33. //in:?验证此属性值在列表之中(通过range指定)。??
  34. ??
  35. //numerical:?验证此属性的值是一个数字??
  36. ??
  37. //captcha:?验证属性值和验证码中显示的一致??
  38. array('verifyCode','captcha'),??
  39. ??
  40. //type:?验证属性的类型是否为type所指定的类型.???
  41. ??
  42. ??
  43. //file:?验证一个属性是否接收到一个有效的上传文件??
  44. ??
  45. ??
  46. //default:?属性指定默认值??
  47. ??
  48. ??
  49. //exist:?验证属性值在数据库中是否存在??
  50. ??
  51. ??
  52. //boolean:?验证布尔属性值??
  53. ??
  54. ??
  55. //date:?检验此属性是否描述了一个日期、时间或日期时间??
  56. ??
  57. ??
  58. //safe:?属性标志为在批量赋值时是安全的。??
  59. ??
  60. ??
  61. //unsafe:?标志为不安全,所以他们不能被批量赋值。?

?

?

二、Yii CModel.rules()方法 、validate预定义完整列表

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’=>’/^[\w\s,]+$/’,
??????????’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’=>’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’)

    ?

热点排行