Zend_Validate-ValidatorChains.xml 2.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15157 -->
  3. <!-- Reviewed: no -->
  4. <sect1 id="zend.validate.validator_chains">
  5. <title>Kettenprüfungen</title>
  6. <para>
  7. Oft sollen mehrere Prüfungen an dem selben Wert in einer bestimmten Reihenfolge durchgeführt werden.
  8. Der folgende Code demonstriert einen Weg um das Beispiel der
  9. <link linkend="zend.validate.introduction">Einführung</link> zu Lösen, wo ein Benutzername zwischen
  10. 6 und 12 Alphanumerischen Zeichen lang sein muß:
  11. <programlisting role="php"><![CDATA[
  12. // Eine Prüfkette erstellen und die Prüfungen hinzufügen
  13. $validatorChain = new Zend_Validate();
  14. $validatorChain->addValidator(new Zend_Validate_StringLength(6, 12))
  15. ->addValidator(new Zend_Validate_Alnum());
  16. // Den Benutzernamen prüfen
  17. if ($validatorChain->isValid($username)) {
  18. // Benutzername das die Prüfung bestanden
  19. } else {
  20. // Der Benutzername hat die Prüfung nicht bestanden; Gründe ausdrucken
  21. foreach ($validatorChain->getMessages() as $message) {
  22. echo "$message\n";
  23. }
  24. }
  25. ]]></programlisting>
  26. Prüfungen werden in der Reihenfolge durchgeführt in der Sie <classname>Zend_Validate</classname> hinzugefügt
  27. wurden. Im obigen Beispiel wird der Benutzername zuerst geprüft um sicherzustellen das die Länge
  28. zwischen 6 und 12 Zeichen beträgt, und anschließend wird geprüft um sicherzustellen das er nur
  29. alphanumerische Zeichen enthält. Die zweite Prüfung, für alphanumerische Zeichen, wird durchgeführt
  30. egal ob die Prüfung der Länge zwischen 6 und 12 Zeichen erfolgreich war oder nicht. Das bedeutet, dass
  31. wenn beide Prüfungen fehlschlagen, <code>getMessages()</code> die Fehlermeldungen von beiden
  32. Prüfungen zurückgibt.
  33. </para>
  34. <para>
  35. In einigen Fällen macht es Sinn eine Prüfung die Kette abbrechen zu lassen wenn der Prüfprozess
  36. fehlschlägt. <classname>Zend_Validate</classname> unterstützt solche Fälle mit dem zweiten Parameter der
  37. <code>addValidator()</code> Methode. Durch Setzen von <code>$breakChainOnFailure</code> zu
  38. <code>true</code> bricht die hinzugefügte Prüfung die Ausführung der Kette bei einem Fehler ab und
  39. verhindert damit die Ausführung von jeglichen anderen Prüfungen welche für diese Situation als
  40. unnötig oder nicht richtig erkannt werden. Wenn das obige Beispiel wie folgt geschrieben wird, wird
  41. die alphanumerische Prüfung nicht stattfinden wenn die Prüfung der Stringlänge fehlschlägt:
  42. <programlisting role="php"><![CDATA[
  43. $validatorChain->addValidator(new Zend_Validate_StringLength(6, 12), true)
  44. ->addValidator(new Zend_Validate_Alnum());
  45. ]]></programlisting>
  46. </para>
  47. <para>
  48. Jegliches Objekt welches das <classname>Zend_Validate_Interface</classname> enthält kann in einer Prüfkette
  49. verwendet werden.
  50. </para>
  51. </sect1>
  52. <!--
  53. vim:se ts=4 sw=4 et:
  54. -->