Zend_Validate-ValidatorChains.xml 2.8 KB

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