Zend_Validate-ValidatorChains.xml 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. <sect1 id="zend.validate.validator_chains">
  2. <title>Reťazenie validátorov</title>
  3. <para>
  4. Často je potrebné aplikovať viac typov validácie na hodnotu v istom poradí.
  5. Nasledujúca ukážka objasní princíp ako to urobiť na príklade z
  6. <link linkend="zend.validate.introduction">úvodu</link>, kde bolo požadované,
  7. že meno používateľa musí mať 6 až 12 alfanumerických znakov:
  8. <programlisting role="php"><![CDATA[<?php
  9. // Triedy na reťazenie validátorov
  10. require_once 'Zend/Validate.php';
  11. // Potrebné validátory
  12. require_once 'Zend/Validate/StringLength.php';
  13. require_once 'Zend/Validate/Alnum.php';
  14. // Vytvorenie zreťazenia
  15. $validatorChain = new Zend_Validate();
  16. $validatorChain->addValidator(new Zend_Validate_StringLength(6, 12))
  17. ->addValidator(new Zend_Validate_Alnum());
  18. // Validácia username
  19. if ($validatorChain->isValid($username)) {
  20. // username zodpovedá požiadavke
  21. } else {
  22. // username nezodpovedá požiadavke; zobrazenie chýb
  23. foreach ($validatorChain->getMessages() as $message) {
  24. echo "$message\n";
  25. }
  26. }
  27. ?>]]></programlisting>
  28. Validátory sú aplikované podľa podľa poradia v ktorom boli pridané do
  29. <code>Zend_Validate</code>. V uvedenom príklade je najprv skontrolovaná dĺžka,
  30. či je medzi 6 - 12, potom či obsahuje iba alfanumerické znaky. Druhá validácia
  31. je urobená vždy, nezávisle na výsledku prvej. Ak obidve validácie zlyhajú,
  32. potom <code>getMessages()</code> vráti chybové správy z obidvoch validátorov.
  33. </para>
  34. <para>
  35. V niektorých prípadoch je zmysluplné prerušiť validáciu ak validácia bola neúspešná.
  36. <code>Zend_Validate</code> umožňuje takéto správanie pomocou druhého parametra
  37. metódy <code>addValidator()</code>. Nastavením <code>$breakChainOnFailure</code>
  38. na <code>true</code> sa preruší validácia v prípade neúspešnej validácie a nebudú
  39. vykonané všetky ostatné validácie, ktoré sú zbytočné, alebo nevhodné v danej
  40. situácii. Ak náš príklad upravíme nasledovne, potom alfanumerická validácia
  41. neprebehne ak bude neúspešná validácia na dĺžku reťazca:
  42. <programlisting role="php"><![CDATA[<?php
  43. $validatorChain->addValidator(new Zend_Validate_StringLength(6, 12), true)
  44. ->addValidator(new Zend_Validate_Alnum());
  45. ?>]]></programlisting>
  46. </para>
  47. <para>
  48. Každý objekt ktorý implementuje <code>Zend_Validate_Interface</code> môže byť
  49. použitý v zreťazení validátorov.
  50. </para>
  51. </sect1>
  52. <!--
  53. vim:se ts=4 sw=4 et:
  54. -->