# ActionStack

Der ActionStack Helfer erlaubt das Verschieben von Anfragen zum ActionStack 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.

## Der Aufruf des ActionStack Helpers inizialisiert das ActionStack Plugin

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

## Eine Aufgabe hinzufügen indem Aktion, Controller und Modulnamen verwendet werden

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

    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');
        }
    }

## Eine Aufgabe hinzufügen durch Verwendung eines Anfrage Objektes

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

    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);
        }
    }