| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768 |
- <sect1 id="zend.validate.validator_chains">
- <title>Łańcuchy weryfikatorów</title>
- <para>
- Często do pewnej wartości potrzebujemy zastosować wiele weryfikatorów w
- określonej kolejności. Poniższy kod demonstruje sposób rozwiązania
- przykładu z
- <link linkend="zend.validate.introduction">wprowadzenia</link>, gdzie
- nazwa użytkownika musi mieć długość między 6 a 12 alfanumerycznych
- znaków:
- <programlisting role="php"><![CDATA[
- // Tworzymy łańcuch weryfikatorów i dodajemy do niego weryfikatory
- $validatorChain = new Zend_Validate();
- $validatorChain->addValidator(new Zend_Validate_StringLength(6, 12))
- ->addValidator(new Zend_Validate_Alnum());
- // Sprawdzamy nazwę użytkownika
- if ($validatorChain->isValid($username)) {
- // nazwa użytkownika jest poprawna
- } else {
- // nazwa użytkownika nie jest poprawna; wyświetlamy komunikaty
- foreach ($validatorChain->getMessages() as $message) {
- echo "$message\n";
- }
- }
- ]]>
- </programlisting>
- Weryfikatory są uruchamiane w takiej kolejności, w jakiej zostały dodane
- do <code>Zend_Validate</code>. W powyższym przykładzie, wpierw jest
- sprawdzane jest to, czy długość nazwy użytkownika mieści się miedzy 6 a
- 12 znaków, a następnie sprawdzane jest czy zawiera ona tylko znaki
- alfanumeryczne. Druga weryfikacja, dla alfanumerycznych znaków, jest
- przeprowadzana niezależnie od tego, czy pierwsza weryfikacja, dla długości
- pomiędzy 6 a 12 znaków udała się. Oznacza to, że jeśli nie udadzą się
- obie weryfikacje, to metoda <code>getMessages()</code> zwróci wiadomości
- błędów pochodzące od obu weryfikatorów.
- </para>
- <para>
- W niektórych przypadkach sensowna może być możliwość przerwania
- łańcucha weryfikatorów w przypadku, gdy proces weryfikacji nie uda się.
- <code>Zend_Validate</code> obsługuje takie przypadki za pomocą
- ustawienia drugiego parametru w metodzie <code>addValidator()</code>.
- Ustawiając wartość zmiennej <code>$breakChainOnFailure</code> na
- <code>true</code>, dodany weryfikator przerwie łańcuchowe wywoływanie
- przy wystąpieniu błędu, co zapobiegnie uruchamianiu innych weryfikacji,
- które w danej sytuacji zostaną uznane za bezużyteczne. Jeśli powyższy
- przykład byłby napisany tak jak poniżej, wtedy weryfikacja znaków
- alfanumerycznych nie byłaby przeprowadzona jeśli długość łańcucha znaków
- byłaby nieodpowiednia:
- <programlisting role="php"><![CDATA[
- $validatorChain->addValidator(new Zend_Validate_StringLength(6, 12), true)
- ->addValidator(new Zend_Validate_Alnum());
- ]]>
- </programlisting>
- </para>
- <para>
- W łańcuchu weryfikatorów może być użyty dowolny obiekt, który implementuje
- interfejs <code>Zend_Validate_Interface</code>.
- </para>
- </sect1>
|