# ActionStack

L'aide ActionStack vous permet d'empiler les requêtes dans le plugin de contrôleur frontal ActionStack, vous aidant effectivement à créer une liste d'actions à exécuter durant la requête. Cette aide vous permet d'ajouter des actions, soit en spécifiant de nouveaux objets de requêtes, soit en paramétrant action / controller / module.

## Invoquer l'aide ActionStack initialise le plugin ActionStack

L'appel de l'aide ActionStack enregistre implicitement le plugin ActionStack - ce qui veut dire que vous n'avez pas besoin d'enregistrer explicitement le plugin ActionStack pour utiliser cette fonctionnalité.

## Ajouter une tâche en utilisant une action, un contrôleur et un module

Souvent, il est plus simple de spécifier l'action, le contrôleur et le module (et optionnellement des paramètres de requêtes), comme vous le feriez en appelant `Zend_Controller_Action::_forward()` :

    class FooController extends Zend_Controller_Action
    {
        public function barAction()
        {
            // Ajoute deux actions à la pile

            // Ajoute un appel à /foo/baz/bar/baz (FooController::bazAction()
            // avec une variable de requête bar == baz)
            $this->_helper->actionStack('baz',
                                        'foo',
                                        'default',
                                        array('bar' => 'baz'));

            // Ajoute un appel à /bar/bat
            // (BarController::batAction())
            $this->_helper->actionStack('bat', 'bar');
        }
    }

## Ajouter une tâche en utilisant un objet de requête

Parfois la nature OO d'un objet de requête a plus de sens ; vous pouvez alors fournir l'objet à l'aide ActionStack.

    class FooController extends Zend_Controller_Action
    {
        public function barAction()
        {
            // Ajoute deux actions à la pile

            // Ajoute un appel à /foo/baz/bar/baz (FooController::bazAction()
            // avec une variable de requête bar == baz)
            $request = clone $this->getRequest();
            // sans régler le contrôleur ou le module,
            // utilise les valeurs courantes
            $request->setActionName('baz')
                    ->setParams(array('bar' => 'baz'));
            $this->_helper->actionStack($request);

            // Ajoute un appel à /bar/bat
            // (BarController::batAction())
            $request = clone $this->getRequest();
            // sans régler le module, utilise la valeur courante
            $request->setActionName('bat')
                    ->setControllerName('bar');
            $this->_helper->actionStack($request);
        }
    }