<?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>
