Chaînes de validationSouvent, de multiples validations doivent être appliquées à une valeur dans un ordre particulier. Le code suivant décrit une méthode permettant de solutionner l'exemple de l'introduction, dans lequel un identifiant doit contenir précisément entre 6 et 12 caractères alphanumériques. // Creation d'une chaine de validateurs et ajout de validateurs $validateurChaine = new Zend_Validate(); $validateurChaine->addValidator( new Zend_Validate_StringLength(array('min' => 6, 'max' => 12))) ->addValidator(new Zend_Validate_Alnum()); // Validation de l'identifiant if ($validateurChaine->isValid($identifiant)) { // l'identifiant est testé avec succès } else { // l'identifiant échoue aux tests, afficher pourquoi foreach ($validateurChaine->getMessages() as $message) { echo "$message\n"; } } Dans certains cas, il peut être utile d'interrompre le processus si l'un des tests échoue. Zend_Validate permet ce cas de figure via l'usage du deuxième paramètre de la méthode addValidator(). En positionnant $breakChainOnFailure à TRUE, le validateur ajouté interrompra la procédure de test s'il échoue, ce qui permet d'éviter de lancer tout autre test qui serait inutile ou inapproprié dans ce cas de figure. Si l'exemple précédent était écrit comme suit, la validation alphanumérique ne serait pas lancé si la vérification de la longueur de la valeur échouait :
Tout objet qui implémente Zend_Validate_Interface peut être utilisé dans une chaîne de validation.
|