| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 19432 -->
- <!-- Reviewed: no -->
- <sect1 id="zend.validate.validator_chains">
- <title>Cadenas de Validadores</title>
- <para>
- Frecuentemente deben aplicarse múltiples validaciones a algún valor
- en un orden particular.
- El siguiente código demuestra una forma de
- resolver el ejemplo de la
- <link linkend="zend.validate.introduction">introducción</link>
- , donde el nombre de usuario debe tener entre 6
- y 12 caracteres alfanuméricos.
- </para>
- <programlisting language="php"><![CDATA[
- // Crea una cadena de validadores y le agrega validadores
- $validatorChain = new Zend_Validate();
- $validatorChain->addValidator(
- new Zend_Validate_StringLength(array('min' => 6,
- 'max' => 12)))
- ->addValidator(new Zend_Validate_Alnum());
- // Valida el username
- if ($validatorChain->isValid($username)) {
- // username pasó la validación
- } else {
- // username falló en la validación; muestre las razones
- foreach ($validatorChain->getMessages() as $message) {
- echo "$message\n";
- }
- }
- ]]></programlisting>
- <para>
- Los validadores se ejecutan en el orden en que se agregaron
- a
- <classname>Zend_Validate</classname>
- . En el ejemplo anterior, el
- nombre de usuario, primero se comprueba que su longitud esté
- entre 6 y
- 12 caracteres y luego se controla para garantizar que sólo contiene
- caracteres
- alfanuméricos. La segunda validación; de caracteres
- alfanuméricos; se realiza
- independientemente de que la primera
- validación; de longitud entre 6 y 12 caracteres; tenga
- éxito. Esto
- significa que si ambas validaciones fallan,
- <methodname>getMessages()</methodname>
- devolverá mensajes de fracaso
- desde ambos validadores.
- </para>
- <para>
- En algunos casos tiene sentido detener la cadena de validación si
- falla alguno de los
- procesos de validación.
- <classname>Zend_Validate</classname>
- acepta tales casos pasando como
- segundo parámetro el método
- <methodname>addValidator()</methodname>
- .
- Poniendo
- <varname>$breakChainOnFailure</varname>
- a
- <constant>TRUE</constant>
- , el validador agregado quebrará la cadena
- de ejecución por el fracaso, que evita correr
- cualquier otra validación
- que se decida que es innecesaria o inapropiada para la situación.
- Si el
- ejemplo anterior fue escrito como sigue, entonces el sistema de
- validación alfanumérica
- no se ejecutará si falla la longitud del string
- de validación:
- </para>
- <programlisting language="php"><![CDATA[
- $validatorChain->addValidator(
- new Zend_Validate_StringLength(array('min' => 6,
- 'max' => 12)),
- true)
- ->addValidator(new Zend_Validate_Alnum());
- ]]></programlisting>
- <para>
- Cualquier objeto que implemente
- <classname>Zend_Validate_Interface</classname>
- puede ser utilizado
- en una cadena de validación.
- </para>
- </sect1>
|