校验器链通常,多个校验器按照特定的顺序被用于某些值。下面的代码示范一个办法去解决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());
任何实现
|