Zend_Controller-ActionHelpers-ActionStack.xml 4.5 KB

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