1 <?xml version="1.0" encoding="UTF-8"?>
3 <sect3 id="zend.controller.actionhelpers.actionstack">
4 <title>ActionStack</title>
7 Помощник <code>ActionStack</code> позволяет помещать в стек запросы к
9 <link linkend="zend.controller.plugins.standard.actionstack">ActionStack</link>
10 фронт-контроллера, помогая эффективно создавать очереди действий,
11 выполняемых в течение запроса. Этот помощник позволяет добавлять
12 действия посредством установки новых объектов запросов или наборов
13 действие/контроллер/модуль.
17 <title>Вызов помощника ActionStack инициализирует плагин ActionStack</title>
20 При вызове помощника <code>ActionStack</code> неявным образом
21 регистрируется плагин <code>ActionStack</code>. Это значит, что нет
22 необходимости явным образом регистрировать плагин
23 <code>ActionStack</code> для того, чтобы использовать его
28 <example id="zend.controller.actionhelpers.actionstack.simple">
29 <title>Добавление задачи с использованием имен действия, контроллера и модуля</title>
32 Зачастую наиболее простым способом будет указание действия,
33 контроллера и модуля (и необязательных параметров запроса), почти
34 так же, как если бы вы вызывали
35 <code>Zend_Controller_Action::_forward()</code>:
38 <programlisting language="php"><![CDATA[
39 class FooController extends Zend_Controller_Action
41 public function barAction()
43 // Добавление двух действий в стек
44 // Добавление вызова к /foo/baz/bar/baz
45 // (FooController::bazAction() с переменной запроса bar == baz)
46 $this->_helper->actionStack('baz',
49 array('bar' => 'baz'));
51 // Добавление вызова к /bar/bat
52 // (BarController::batAction())
53 $this->_helper->actionStack('bat', 'bar');
60 <example id="zend.controller.actionhelpers.actionstack.simple2">
61 <title>Добавление задачи с использованием объекта запроса</title>
64 Иногда имеет смысл использовать объект запроса, что более
65 соответствует духу ООП. Объект запроса тоже можно передавать
66 помощнику <code>ActionStack</code>.
69 <programlisting language="php"><![CDATA[
70 class FooController extends Zend_Controller_Action
72 public function barAction()
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);