YII Validator 验证器笔记

Yii在包system.validators中封装了各类验证类。

验证器别名的完整列表如下:* boolean:它是CBooleanValidator类的别名,验证属性的值是布尔值(true或false)。
* captcha:它是CCaptchaValidator类的别名,验证属性的值等于一个显示的CAPTCHA(验证码)的值。
* compare:它是CCompareValidator类的别名,验证属性的值与另一个属性的值相等。
* email:它是CEmailValidator类的别名,验证属性的值为有一个有效的Email地址。
* default:它是CDefaultValidator类的别名,验证属性的值为分配的默认值。
* exist:它是CExistValidator类的别名,验证属性的值在表中的对应列中存在。
* file:它是CFileValidator类的别名,验证属性的值包含上传的文件。
* filter:它是CFilterValidator类的别名,用过滤器转换属性的值。
* in:它是CRangeValidator类的别名,验证属性值在一个预定义列表中。
* length:它是CStringValidator类的别名,验证属性值的长度在一个范围内。
* match:它是CRegularExpressionValidator类的别名,验证属性值匹配一个正则表达式。
* numerical:它是CNumberValidator类的别名,验证属性值是数字。
* required:它是CRequiredValidator类的别名,验证属性值必需有值,不能为空。
* type:它是CTypedValidator类的别名,验证属性值是一个指定的数据类型。
* unique:它是CUniquedValidator类的别名,验证属性值在表中的对应列中是唯一的。
* url:它是CUrlValidator类的别名,验证属性值是一个有效的URL。

 

如何通过验证方法来验证Model的属性,实现rules()即可按照规则来选择验证器进行验证。

看看API给出的说明:

rules() 方法
public array rules()
{return} array validation rules to be applied when validate() is called.

Returns the validation rules for attributes. 

This method should be overridden to declare validation rules. Each rule is an array with the following structure:

array('attribute list', 'validator name', 'on'=>'scenario name', ...validation parameters...)

where

attribute list: specifies the attributes (separated by commas) to be validated;

//属性列表,用‘,’分隔。eg 'attr1, attr2, attr3...'

validator name: specifies the validator to be used. It can be the name of a model class method, the name of a built-in validator, or a validator class (or its path alias). A validation method must have the following signature:

// $params refers to validation parameters given in the rule
function validatorName($attribute,$params)

A built-in validator refers to one of the validators declared in CValidator::builtInValidators. And a validator class is a class extending CValidator.

//可以指定 模型类的方法、指定一个单独的验证器类(这个类继承CValidator)使用Yii框架中现有的验证器,指定预定义的验证器别名即可

on: this specifies the scenarios when the validation rule should be performed. Separate different scenarios with commas. If this option is not set, the rule will be applied in any scenario. Please see scenario for more details about this option.

/**

* on这个参数指定了一个scenario(情景)列表来使用这条验证规则。 提示:scenario(情景)允许你限制验证规则应用在特定的上下文中。一种典型的例子是insert(插入)或* update(更新)。例如:如果被指定为'on'=>'insert',这将表明验证规则只适用于模型的插入情景。这同样适用于'update'或其它的任何你希望定义的情景。你可以设* 置一个模型的scenario(情景)属性或能过构造函数传给一个模型的实例。 如果这里没有设置,该规则将适用于调用save()方法的所有情景

**/

additional parameters are used to initialize the corresponding validator properties. Please refer to individal validator class API for possible properties.

//additional options(附加选项)是name/value(键值对)出现的用来初始化validator(验证器)的属性.eg. 'integerOnly'=>true

posted @ 2012-10-20 10:37  zaric  阅读(933)  评论(0编辑  收藏  举报