Zend_Validate-ValidatorChains.xml 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 19432 -->
  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
  8. en un orden particular.
  9. El siguiente código demuestra una forma de
  10. resolver el ejemplo de la
  11. <link linkend="zend.validate.introduction">introducción</link>
  12. , donde el nombre de usuario debe tener entre 6
  13. y 12 caracteres alfanuméricos.
  14. </para>
  15. <programlisting language="php"><![CDATA[
  16. // Crea una cadena de validadores y le agrega validadores
  17. $validatorChain = new Zend_Validate();
  18. $validatorChain->addValidator(
  19. new Zend_Validate_StringLength(array('min' => 6,
  20. 'max' => 12)))
  21. ->addValidator(new Zend_Validate_Alnum());
  22. // Valida el username
  23. if ($validatorChain->isValid($username)) {
  24. // username pasó la validación
  25. } else {
  26. // username falló en la validación; muestre las razones
  27. foreach ($validatorChain->getMessages() as $message) {
  28. echo "$message\n";
  29. }
  30. }
  31. ]]></programlisting>
  32. <para>
  33. Los validadores se ejecutan en el orden en que se agregaron
  34. a
  35. <classname>Zend_Validate</classname>
  36. . En el ejemplo anterior, el
  37. nombre de usuario, primero se comprueba que su longitud esté
  38. entre 6 y
  39. 12 caracteres y luego se controla para garantizar que sólo contiene
  40. caracteres
  41. alfanuméricos. La segunda validación; de caracteres
  42. alfanuméricos; se realiza
  43. independientemente de que la primera
  44. validación; de longitud entre 6 y 12 caracteres; tenga
  45. éxito. Esto
  46. significa que si ambas validaciones fallan,
  47. <methodname>getMessages()</methodname>
  48. devolverá mensajes de fracaso
  49. desde ambos validadores.
  50. </para>
  51. <para>
  52. En algunos casos tiene sentido detener la cadena de validación si
  53. falla alguno de los
  54. procesos de validación.
  55. <classname>Zend_Validate</classname>
  56. acepta tales casos pasando como
  57. segundo parámetro el método
  58. <methodname>addValidator()</methodname>
  59. .
  60. Poniendo
  61. <varname>$breakChainOnFailure</varname>
  62. a
  63. <constant>TRUE</constant>
  64. , el validador agregado quebrará la cadena
  65. de ejecución por el fracaso, que evita correr
  66. cualquier otra validación
  67. que se decida que es innecesaria o inapropiada para la situación.
  68. Si el
  69. ejemplo anterior fue escrito como sigue, entonces el sistema de
  70. validación alfanumérica
  71. no se ejecutará si falla la longitud del string
  72. de validación:
  73. </para>
  74. <programlisting language="php"><![CDATA[
  75. $validatorChain->addValidator(
  76. new Zend_Validate_StringLength(array('min' => 6,
  77. 'max' => 12)),
  78. true)
  79. ->addValidator(new Zend_Validate_Alnum());
  80. ]]></programlisting>
  81. <para>
  82. Cualquier objeto que implemente
  83. <classname>Zend_Validate_Interface</classname>
  84. puede ser utilizado
  85. en una cadena de validación.
  86. </para>
  87. </sect1>