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