Zend_Validate-ValidatorChains.xml 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.validate.validator_chains">
  5. <title>Cadenas de Validadores</title>
  6. <para> Frecuentemente deben aplicarse múltiples validaciones a algún valor
  7. en un orden particular. El siguiente código demuestra una forma de
  8. resolver el ejemplo de la <link linkend="zend.validate.introduction"
  9. >introducción</link>, donde el nombre de usuario debe tener entre 6
  10. y 12 caracteres alfanuméricos. <programlisting language="php"><![CDATA[
  11. // Crea una cadena de validadores y le agrega validadores
  12. $validatorChain = new Zend_Validate();
  13. $validatorChain->addValidator(new Zend_Validate_StringLength(6, 12))
  14. ->addValidator(new Zend_Validate_Alnum());
  15. // Valida el username
  16. if ($validatorChain->isValid($username)) {
  17. // username pasó la validación
  18. } else {
  19. // username falló en la validación; muestre las razones
  20. foreach ($validatorChain->getMessages() as $message) {
  21. echo "$message\n";
  22. }
  23. }
  24. ]]></programlisting> Los validadores se ejecutan en el orden en que se agregaron
  25. a <methodname>Zend_Validate</methodname>. En el ejemplo anterior, el
  26. nombre de usuario, primero se comprueba que su longitud esté entre 6 y
  27. 12 caracteres y luego se controla para garantizar que sólo contiene
  28. caracteres alfanuméricos. La segunda validación; de caracteres
  29. alfanuméricos; se realiza independientemente de que la primera
  30. validación; de longitud entre 6 y 12 caracteres; tenga éxito. Esto
  31. significa que si ambas validaciones fallan,
  32. <methodname>getMessages()</methodname> devolverá mensajes de fracaso
  33. desde ambos validadores. </para>
  34. <para> En algunos casos tiene sentido detener la cadena de validación si
  35. falla alguno de los procesos de validación.
  36. <classname>Zend_Validate</classname> acepta tales casos pasando como
  37. segundo parámetro el método <methodname>addValidator()</methodname>.
  38. Poniendo <methodname>$breakChainOnFailure</methodname> a
  39. <constant>TRUE</constant>, el validador agregado quebrará la cadena
  40. de ejecución por el fracaso, que evita correr cualquier otra validación
  41. que se decida que es innecesaria o inapropiada para la situación. Si el
  42. ejemplo anterior fue escrito como sigue, entonces el sistema de
  43. validación alfanumérica no se ejecutará si falla la longitud del string
  44. de validación: <programlisting language="php"><![CDATA[
  45. $validatorChain->addValidator(new Zend_Validate_StringLength(6, 12), true)
  46. ->addValidator(new Zend_Validate_Alnum());
  47. ]]></programlisting>
  48. </para>
  49. <para> Cualquier objeto que implemente
  50. <classname>Zend_Validate_Interface</classname> puede ser utilizado
  51. en una cadena de validación. </para>
  52. </sect1>