2
0

Zend_Validate-ValidatorChains.xml 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15742 -->
  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
  8. werden. 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
  10. zwischen 6 und 12 Alphanumerischen Zeichen lang sein muss:
  11. <programlisting language="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
  27. <classname>Zend_Validate</classname> hinzugefügt wurden. Im obigen Beispiel wird der
  28. Benutzername zuerst geprüft um sicherzustellen das die Länge zwischen 6 und 12 Zeichen
  29. beträgt, und anschließend wird geprüft um sicherzustellen das er nur alphanumerische Zeichen
  30. enthält. Die zweite Prüfung, für alphanumerische Zeichen, wird durchgeführt egal ob die
  31. Prüfung der Länge zwischen 6 und 12 Zeichen erfolgreich war oder nicht. Das bedeutet, dass
  32. wenn beide Prüfungen fehlschlagen, <code>getMessages()</code> die Fehlermeldungen von beiden
  33. Prüfungen zurück gibt.
  34. </para>
  35. <para>
  36. In einigen Fällen macht es Sinn eine Prüfung die Kette abbrechen zu lassen wenn der
  37. Prüfprozess fehlschlägt. <classname>Zend_Validate</classname> unterstützt solche Fälle mit
  38. dem zweiten Parameter der <code>addValidator()</code> Methode. Durch Setzen von
  39. <code>$breakChainOnFailure</code> zu <constant>TRUE</constant> bricht die hinzugefügte Prüfung die
  40. Ausführung der Kette bei einem Fehler ab und verhindert damit die Ausführung von jeglichen
  41. anderen Prüfungen welche für diese Situation als unnötig oder nicht richtig erkannt werden.
  42. Wenn das obige Beispiel wie folgt geschrieben wird, wird die alphanumerische Prüfung nicht
  43. stattfinden wenn die Prüfung der Stringlänge fehlschlägt:
  44. <programlisting language="php"><![CDATA[
  45. $validatorChain->addValidator(new Zend_Validate_StringLength(6, 12), true)
  46. ->addValidator(new Zend_Validate_Alnum());
  47. ]]></programlisting>
  48. </para>
  49. <para>
  50. Jegliches Objekt welches das <classname>Zend_Validate_Interface</classname> enthält kann in
  51. einer Prüfkette verwendet werden.
  52. </para>
  53. </sect1>
  54. <!--
  55. vim:se ts=4 sw=4 et:
  56. -->