Previous topic

Next topic

Validator Chains

Often multiple validations should be applied to some value in a particular order. The
following code demonstrates a way to solve the example from the
introduction, where a username must be
between 6 and 12 alphanumeric characters:

Validators are run in the order they were added to Zend_Validate. In
the above example, the username is first checked to ensure that its length is between 6 and
12 characters, and then it is checked to ensure that it contains only alphanumeric
characters. The second validation, for alphanumeric characters, is performed regardless of
whether the first validation, for length between 6 and 12 characters, succeeds. This means
that if both validations fail, getMessages() will return failure
messages from both validators.

In some cases it makes sense to have a validator break the chain if its validation process
fails. Zend_Validate supports such use cases with the second
parameter to the addValidator() method. By setting
$breakChainOnFailure to TRUE, the added validator
will break the chain execution upon failure, which avoids running any other validations that
are determined to be unnecessary or inappropriate for the situation. If the above example
were written as follows, then the alphanumeric validation would not occur if the string
length validation fails: