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

    <para>
        Der <emphasis>ActionStack</emphasis> Helfer erlaubt das Verschieben von Anfragen zum <link
            linkend="zend.controller.plugins.standard.actionstack">ActionStack</link> Front
        Controller 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 - Controller - Modul Sets.
    </para>

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

        <para>
            Der Aufruf des <emphasis>ActionStack</emphasis> Helpers registriert das
            <emphasis>ActionStack</emphasis> Plugin implizit -- was bedeutet dass das
            <emphasis>ActionStack</emphasis> 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, Controller und Modulnamen verwendet werden
        </title>

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

        <programlisting language="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 <acronym>OOP</acronym> Natur eines Anfrage Objektes mehr Sinn; solch
            ein Objekt kann dem <emphasis>ActionStack</emphasis> Helfer genauso übergeben werden.
        </para>

        <programlisting language="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();
        // Controller 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>
