| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!-- EN-Revision: 24249 -->
- <!-- 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 muss:
- </para>
- <programlisting language="php"><![CDATA[
- // Eine Prüfkette erstellen und die Prüfungen hinzufügen
- $validatorChain = new Zend_Validate();
- $validatorChain->addValidator(
- new Zend_Validate_StringLength(array('min' => 6,
- 'max' => 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>
- <para>
- 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, <methodname>getMessages()</methodname> die
- Fehlermeldungen von beiden Prüfungen zurück gibt.
- </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 <methodname>addValidator()</methodname> Methode. Durch Setzen von
- <varname>$breakChainOnFailure</varname> zu <constant>TRUE</constant> 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:
- </para>
- <programlisting language="php"><![CDATA[
- $validatorChain->addValidator(
- new Zend_Validate_StringLength(array('min' => 6,
- 'max' => 12)),
- true)
- ->addValidator(new Zend_Validate_Alnum());
- ]]></programlisting>
- <para>
- Jegliches Objekt welches das <classname>Zend_Validate_Interface</classname> enthält kann in
- einer Prüfkette verwendet werden.
- </para>
- </sect1>
|