校验器链通常,多个校验器按照特定的顺序被用于某些值。下面的代码示范一个办法去解决introduction中的例子的要求,即用户名必须在6到12个字符的文字数字组合:
// Create a validator chain and add validators to it
$validatorChain = new Zend_Validate();
$validatorChain->addValidator(new Zend_Validate_StringLength(6, 12))
->addValidator(new Zend_Validate_Alnum());
// Validate the username
if ($validatorChain->isValid($username)) {
// username passed validation
} else {
// username failed validation; print reasons
foreach ($validatorChain->getMessages() as $message) {
echo "$message\n";
}
Zend_Validate的顺序执行。在上面的例子中,用户名首先被检查来确保它的长度在6到12个字符,然后它被检查来确保它只包含文字和数字。不管第一个校验(检查长度是否6到12)是否成功,第二个校验(检查是否文字数字组合)总被执行。这就意味着如果两个校验都失败,getMessages()将为两个校验器都返回失败信息。
在某些情况下,如果校验过程失败, 让校验器中断校验器链符合常识。
$validatorChain->addValidator(new Zend_Validate_StringLength(6, 12), true)
->addValidator(new Zend_Validate_Alnum());
任何实现
|