| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 15103 -->
- <!-- 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. <programlisting language="php"><![CDATA[
- // Crea una cadena de validadores y le agrega validadores
- $validatorChain = new Zend_Validate();
- $validatorChain->addValidator(new Zend_Validate_StringLength(6, 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> Los validadores se ejecutan en el orden en que se agregaron
- a <methodname>Zend_Validate</methodname>. 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 <methodname>$breakChainOnFailure</methodname> 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: <programlisting language="php"><![CDATA[
- $validatorChain->addValidator(new Zend_Validate_StringLength(6, 12), true)
- ->addValidator(new Zend_Validate_Alnum());
- ]]></programlisting>
- </para>
- <para> Cualquier objeto que implemente
- <classname>Zend_Validate_Interface</classname> puede ser utilizado
- en una cadena de validación. </para>
- </sect1>
|