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