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

    <para>
        Плагин <code>ActionStack</code> позволяет управлять стеком запросов и
        действует как плагин <code>postDispatch</code>. Если в текущем
        объекте запроса уже задан переход на другое действие, то ничего не
        делается. Иначе плагин проверяет свой стек, тянет самый
        верхний элемент и производит переход на действие, заданное в этом
        запросе. Стек обрабатывается в порядке "последний вошел - первый
        вышел" (last-in-first-out, LIFO).
    </para>

    <para>
        Вы можете извлечь плагин из фронт-контроллера в любой момент времени,
        используя <code>Zend_Controller_Front::getPlugin('Zend_Controller_Plugin_ActionStack')</code>.
        Имея объект плагина, вы можете использовать различные методы для
        управления им.
    </para>

    <itemizedlist>
        <listitem><para>
                <code>getRegistry()</code> и <code>setRegistry()</code>.
                Внутри себя <code>ActionStack</code> использует экземпляр
                <classname>Zend_Registry</classname> для хранения стека. Вы можете с
                помощью этих аксессоров заменить экземпляр реестра на другой или
                извлечь его.
        </para></listitem>

        <listitem><para>
                <code>getRegistryKey()</code> и <code>setRegistryKey()</code>.
                Они могут использоваться для определения того, какой ключ
                реестра используется при извлечении стека. По умолчанию
                используется ключ 'Zend_Controller_Plugin_ActionStack'.
        </para></listitem>

        <listitem><para>
                <code>getStack()</code> позволяет извлечь стек действий целиком.
        </para></listitem>

        <listitem><para>
                <code>pushStack()</code> и <code>popStack()</code> позволяют
                соответственно добавлять и извлекать из стека.
                <code>pushStack()</code> принимает объект запроса.
        </para></listitem>
    </itemizedlist>

    <para>
        Дополнительный метод <code>forward()</code> ожидает объект запроса в
        качестве аргумента и устанавливает состояние текущего объекта запроса во
        фронт-контроллере в состояние переданного объекта запроса, помечая его
        как необработанный диспетчером (что приводит к еще одной итерации цикла
        диспетчеризации).
    </para>
</sect3>
<!--
vim:se ts=4 sw=4 et:
-->
