[MANUAL] English:
[zend.git] / documentation / manual / ru / module_specs / Zend_Controller-ActionHelpers-ActionStack.xml
bloba73e752fb1c07aab2e7590ba01335da0569eee83
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!-- Reviewed: no -->
3 <sect3 id="zend.controller.actionhelpers.actionstack">
4     <title>ActionStack</title>
6     <para>
7         Помощник <code>ActionStack</code> позволяет помещать в стек запросы к
8         плагину
9         <link linkend="zend.controller.plugins.standard.actionstack">ActionStack</link>
10         фронт-контроллера, помогая эффективно создавать очереди действий,
11         выполняемых в течение запроса. Этот помощник позволяет добавлять
12         действия посредством установки новых объектов запросов или наборов
13         действие/контроллер/модуль.
14     </para>
16     <note>
17         <title>Вызов помощника ActionStack инициализирует плагин ActionStack</title>
19         <para>
20             При вызове помощника <code>ActionStack</code> неявным образом
21             регистрируется плагин <code>ActionStack</code>. Это значит, что нет
22             необходимости явным образом регистрировать плагин
23             <code>ActionStack</code> для того, чтобы использовать его
24             функционал.
25         </para>
26     </note>
28     <example id="zend.controller.actionhelpers.actionstack.simple">
29         <title>Добавление задачи с использованием имен действия, контроллера и модуля</title>
31         <para>
32             Зачастую наиболее простым способом будет указание действия,
33             контроллера и модуля (и необязательных параметров запроса), почти
34             так же, как если бы вы вызывали
35             <code>Zend_Controller_Action::_forward()</code>:
36         </para>
38         <programlisting language="php"><![CDATA[
39 class FooController extends Zend_Controller_Action
41     public function barAction()
42     {
43         // Добавление двух действий в стек
44         // Добавление вызова к /foo/baz/bar/baz
45         // (FooController::bazAction() с переменной запроса bar == baz)
46         $this->_helper->actionStack('baz',
47                                     'foo',
48                                     'default',
49                                     array('bar' => 'baz'));
51         // Добавление вызова к /bar/bat
52         // (BarController::batAction())
53         $this->_helper->actionStack('bat', 'bar');
54     }
56 ]]></programlisting>
58     </example>
60     <example id="zend.controller.actionhelpers.actionstack.simple2">
61         <title>Добавление задачи с использованием объекта запроса</title>
63         <para>
64             Иногда имеет смысл использовать объект запроса, что более
65             соответствует духу ООП. Объект запроса тоже можно передавать
66             помощнику <code>ActionStack</code>.
67         </para>
69         <programlisting language="php"><![CDATA[
70 class FooController extends Zend_Controller_Action
72     public function barAction()
73     {
74         // Добавление двух действий в стек
75         // Добавление вызова к /foo/baz/bar/baz
76         // (FooController::bazAction() с переменной запроса bar == baz)
77         $request = clone $this->getRequest();
78         // Не устанавливайте контроллер и модуль;
79         // используются текущие значения
80         $request->setActionName('baz')
81                 ->setParams(array('bar' => 'baz'));
82         $this->_helper->actionStack($request);
84         // Add call to /bar/bat
85         // (BarController::batAction())
86         $request = clone $this->getRequest();
87         // Не устанавливайте модуль;
88         // используется текущиее значение
89         $request->setActionName('bat')
90                 ->setControllerName('bar');
91         $this->_helper->actionStack($request);
92     }
94 ]]></programlisting>
95     </example>
96 </sect3>
97 <!--
98 vim:se ts=4 sw=4 et:
99 -->