yii框架零碎

   
     
声明验证规则

一旦用户提交了他的输入,模型被填充,我们就需要在使用前确保用户的输入是有效的。 这是通过将用户的输入和一系列规则执行验证实现的。我们在 rules() 方法中指定这些验证规则, 此方法应返回一个规则配置数组。

class LoginForm extends CFormModel
{
public $username ;
public $password ;
public $rememberMe = false ;

private $_identity ;

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 参数是可选的,它指定此规则应被应用到的场景列表; 附加选项是一个名值对数组,用于初始化相应验证器的属性值。

有三种方式可在验证规则中指定 Validator 。第一, Validator 可以是模型类中一个方法的名字,就像上面示例中的 authenticate 。验证方法必须是下面的结构:

/* *
* @param string 所要验证的特性的名字
* @param array 验证规则中指定的选项
*/
public function ValidatorName( $attribute , $params ) { ... }
第二,Validator 可以是一个验证器类的名字,当此规则被应用时, 一个验证器类的实例将被创建以执行实际验证。规则中的附加选项用于初始化实例的属性值。 验证器类必须继承自 CValidator。

第三,Validator 可以是一个预定义的验证器类的别名。在上面的例子中, required 名字是CRequiredValidator 的别名,它用于确保所验证的特性值不为空。 下面是预定义的验证器别名的完整列表:

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

captcha
: CCaptchaValidator 的别名,确保特性值等于 CAPTCHA 中显示的验证码。

compare
: CCompareValidator 的别名,确保特性等于另一个特性或常量。

email
: CEmailValidator 的别名,确保特性是一个有效的Email地址。

default : CDefaultValueValidator 的别名,指定特性的默认值。

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

file : CFileValidator 的别名,确保特性含有一个上传文件的名字。

filter
: CFilterValidator 的别名,通过一个过滤器改变此特性。

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

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

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

numerical
: CNumberValidator 的别名,确保数据是一个有效的数字。

required
: CRequiredValidator 的别名,确保特性不为空。

type
: CTypeValidator 的别名,确保特性是指定的数据类型。

unique
: CUniqueValidator 的别名,确保数据在数据表的列中是唯一的。

url
: CUrlValidator 的别名,确保数据是一个有效的 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 ' ) ,

你可能感兴趣的:(yii框架)