public function rules()
{
return array(
array('contact','required','on'=>'edit','message'=>'联系人必须填写.'),
array('contact','length','on'=>'edit','min'=>2,'max'=>10,'tooShort'=>'联系人长度请控制在2-10个字符.','tooLong'=>'联系人长度请控制在2-10个字符.'),
array('tel', 'match','pattern' => '/^(\d{3}-|\d{4}-)(\d{8}|\d{7})?$/','message' => '请输入正确的电话号码.'),
array('fax', 'match','pattern' => '/^(\d{3}-|\d{4}-)(\d{8}|\d{7})?$/','message' => '请输入正确的传真号码.'),
array('mobile', 'match','pattern' => '/^13[0-9]{1}[0-9]{8}$|15[0189]{1}[0-9]{8}$|189[0-9]{8}$/','message' => '请输入正确的手机号码.'),
array('email','email','on'=>'edit','message'=>'邮箱输入有误.'),
array('zipcode','required','on'=>'edit','message'=>'邮编必须填写.'),
array('zipcode','numerical','on'=>'edit','message'=>'邮编是6位数字.'),
array('zipcode','length','on'=>'edit','min'=>6,'max'=>6,'tooShort'=>'邮编长度为6位数.','tooLong'=>'邮编长度为6位数.'),
array('website','url','on'=>'edit','message'=>'网址输入有误.'),
array('qq', 'match','pattern' => '/^[1-9]{1}[0-9]{4,11}$/','message' => '请输入正确的QQ号码.'),
array('msn','email','on'=>'edit','message'=>'MSN输入有误.'),
array('status', 'in', 'range'=>array(1,2,3)),
);
}
以上例子:
声明验证规则,应重写此方法。 每个规则是数组具有以下结构:
array(‘attribute list’, ‘validator name’, ‘on’=>’scenario name’, …validation parameters…)
注:
*attribute list: 指定属性 (以逗号分隔) 进行验证 ;
*validator name: 指定要使用的验证程序。
on: 应执行有效性规则时,此选项指定的情形。用逗号分开不同的方案。如果未设置此选项,将在任何情况下应用规则。
以下为有效规则属性
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 的别名, 确保了特性是一个有效的路径.
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), 严格验证
2、CFilterValidator 过滤验证
属性
filter - 方法名
实例:
array('username', 'test')
function test()
{
$username = $this->username;
if($username != 'lh'){
$this->addError('username','username must be lh');
}
}
3、CRegularExpressionValida
属性
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 - 是否允许在电子邮件地址的名称
实例:
array('username', 'email', 'message'=>'必须为电子邮箱','pattern'=>'/[a-z]/i'),
5、CUrlValidator - url验证
属性:
allowEmpty - 是否为空
实例:
array('username', 'url', 'message'=>'must url'),
array('username', 'url','defaultScheme'=>'http://www.baidu.com'),
6、CUniqueValidator - 唯一性验证
属性:
allowEmpty - 是否为空 attributeName - 属性名称
实例:
array('username', 'unique','message'=>'该记录存在'),
array('username', 'unique', 'caseSensitive'=>false,'message'=>'该记录存在'),
7、CCompareValidator - 比较验证
属性:
实例:
// 与某个值比较
array('username', 'compare', 'compareValue'=>'10','operator'=>'>','message'=>'必须大于10'),
// 与某个提交的属性比较
array('username', 'compare','compareAttribute'=>'password','operator'=>'>','message'=>'必须大于password'),
8、CStringValidator - 字符串验证
属性:
实例:
array('username', 'length', 'max'=>10,'min'=>5, 'tooLong'=>'太长了','tooShort'=>'太短了'),
array('username', 'length', 'is'=>5,'message'=>'长度必须为5'),
9、CRangeValidator - 在某个范围内
属性:
实例:
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 - 数字验证
属性:
实例:
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 - 验证码验证
属性:
12、CTypeValidator - 类型验证
属性:
实例:
array('username', 'type','dateFormat'=>'MM/dd/yyyy','type'=>'date'),
13、CFileValidator - 文件验证
属性:
14、CDefaultValueValidator - 默认值
属性:
实例:
array('username', 'default', 'setOnEmpty'=>true,'value'=>'lh'),
15、CExistValidator - 是否存在
属性:
16、CBooleanValidator - 布尔类型验证
属性:
实例:
array('username', 'boolean', 'trueValue'=>1,'falseValue'=>-1, 'message'=>'thevalue must be 1 or -1'),
17、CDateValidator
属性:
实例:
array('username', 'date','format'=>'MM-dd-yyyy','message'=>'mustbe MM-dd-yyyy'),
array('username', 'date','format'=>'MM/dd/yyyy','message'=>'mustbe MM/dd/yyyy'),