<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: 14978 -->
<!-- Reviewed: no -->
<sect3 id="zend.controller.actionhelpers.actionstack">
    <title>ActionStack</title>

    <para>
        Der <code>ActionStack</code> Helfer erlaubt das Verschieben von Anfragen zum
        <link linkend="zend.controller.plugins.standard.actionstack">ActionStack</link> Front Kontroller Plugin,
        welches effektiv hilft um eine Queue von Aktionen zu erstellen die wärend der Anfrage ausgeführt
        wird. Der Helfer erlaubt das hinzufügen von Aktionen entweder durch Spezifikation von neuen
        Anfrage Objekten oder Aktion/Kontroller/Modul Sets.
    </para>

    <note>
        <title>Der Aufruf des ActionStack Helpers inizialisiert das ActionStack Plugin</title>

        <para>
            Der Aufruf des <code>ActionStack</code> Helpers registriert das <code>ActionStack</code>
            Plugin implizit -- was bedeutet das das <code>ActionStack</code> Plugin nicht explizit
            registriert werden muß um dessen Funktionalität zu verwenden.
        </para>
    </note>

    <example id="zend.controller.actionhelpers.actionstack.simple">
        <title>Eine Aufgabe hinzufügen indem Aktion, Kontroller und Modulnamen verwendet werden</title>

        <para>
            Oft ist es am einfachsten, einfach die Aktion, den Kontroller und das Modul (und optionale
            Anfrage Parameter) zu spezifizieren, wie wenn <classname>Zend_Controller_Action::_forward()</classname>
            aufgerufen werden würde:
        </para>

        <programlisting role="php"><![CDATA[
class FooController extends Zend_Controller_Action
{
    public function barAction()
    {
        // Dem Stack zwei Aktionen hinzufügen
        // Und /foo/baz/bar/baz aufrufen
        // (FooController::bazAction() mit der Anfrage var bar == baz)
        $this->_helper->actionStack('baz',
                                    'foo',
                                    'default',
                                    array('bar' => 'baz'));

        // Aufruf für /bar/bat hinzufügen
        // (BarController::batAction())
        $this->_helper->actionStack('bat', 'bar');
    }
}
]]>
        </programlisting>

    </example>

    <example id="zend.controller.actionhelpers.actionstack.simple2">
        <title>Eine Aufgabe hinzufügen durch Verwendung eines Anfrage Objektes</title>

        <para>
            Machmal macht die OOP Natur eines Anfrage Objektes mehr Sinn; solch ein Objekt kann
            dem <code>ActionStack</code> Helfer genauso übergeben werden.
        </para>

        <programlisting role="php"><![CDATA[
class FooController extends Zend_Controller_Action
{
    public function barAction()
    {
        // Dem Stack zwei Aktionen hinzufügen
        // Aufruf zu /foo/baz/bar/baz hinzufügen
        // (FooController::bazAction() mit der Anfrage var bar == baz)
        $request = clone $this->getRequest();
        // Kontroller oder Modul nicht setzen, verwende aktuelle Werte
        $request->setActionName('baz')
                ->setParams(array('bar' => 'baz'));
        $this->_helper->actionStack($request);

        // Aufruf zu /bar/bat hinzufügen
        // (BarController::batAction())
        $request = clone $this->getRequest();
        // Modul nicht setzen, verwende aktuelle Werte
        $request->setActionName('bat')
                ->setControllerName('bar');
        $this->_helper->actionStack($request);
    }
}
]]>
        </programlisting>
    </example>
</sect3>
<!--
vim:se ts=4 sw=4 et:
-->
