Zend_Controller-ActionHelpers-ActionStack.xml 3.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!-- EN-Revision: 15103 -->
  3. <!-- Reviewed: no -->
  4. <sect3 id="zend.controller.actionhelpers.actionstack">
  5. <title>ActionStack</title>
  6. <para>
  7. Der <code>ActionStack</code> Helfer erlaubt das Verschieben von Anfragen zum
  8. <link linkend="zend.controller.plugins.standard.actionstack">ActionStack</link> Front Kontroller Plugin,
  9. welches effektiv hilft um eine Queue von Aktionen zu erstellen die wärend der Anfrage ausgeführt
  10. wird. Der Helfer erlaubt das hinzufügen von Aktionen entweder durch Spezifikation von neuen
  11. Anfrage Objekten oder Aktion/Kontroller/Modul Sets.
  12. </para>
  13. <note>
  14. <title>Der Aufruf des ActionStack Helpers inizialisiert das ActionStack Plugin</title>
  15. <para>
  16. Der Aufruf des <code>ActionStack</code> Helpers registriert das <code>ActionStack</code>
  17. Plugin implizit -- was bedeutet das das <code>ActionStack</code> Plugin nicht explizit
  18. registriert werden muß um dessen Funktionalität zu verwenden.
  19. </para>
  20. </note>
  21. <example id="zend.controller.actionhelpers.actionstack.simple">
  22. <title>Eine Aufgabe hinzufügen indem Aktion, Kontroller und Modulnamen verwendet werden</title>
  23. <para>
  24. Oft ist es am einfachsten, einfach die Aktion, den Kontroller und das Modul (und optionale
  25. Anfrage Parameter) zu spezifizieren, wie wenn <classname>Zend_Controller_Action::_forward()</classname>
  26. aufgerufen werden würde:
  27. </para>
  28. <programlisting role="php"><![CDATA[
  29. class FooController extends Zend_Controller_Action
  30. {
  31. public function barAction()
  32. {
  33. // Dem Stack zwei Aktionen hinzufügen
  34. // Und /foo/baz/bar/baz aufrufen
  35. // (FooController::bazAction() mit der Anfrage var bar == baz)
  36. $this->_helper->actionStack('baz',
  37. 'foo',
  38. 'default',
  39. array('bar' => 'baz'));
  40. // Aufruf für /bar/bat hinzufügen
  41. // (BarController::batAction())
  42. $this->_helper->actionStack('bat', 'bar');
  43. }
  44. }
  45. ]]>
  46. </programlisting>
  47. </example>
  48. <example id="zend.controller.actionhelpers.actionstack.simple2">
  49. <title>Eine Aufgabe hinzufügen durch Verwendung eines Anfrage Objektes</title>
  50. <para>
  51. Machmal macht die OOP Natur eines Anfrage Objektes mehr Sinn; solch ein Objekt kann
  52. dem <code>ActionStack</code> Helfer genauso übergeben werden.
  53. </para>
  54. <programlisting role="php"><![CDATA[
  55. class FooController extends Zend_Controller_Action
  56. {
  57. public function barAction()
  58. {
  59. // Dem Stack zwei Aktionen hinzufügen
  60. // Aufruf zu /foo/baz/bar/baz hinzufügen
  61. // (FooController::bazAction() mit der Anfrage var bar == baz)
  62. $request = clone $this->getRequest();
  63. // Kontroller oder Modul nicht setzen, verwende aktuelle Werte
  64. $request->setActionName('baz')
  65. ->setParams(array('bar' => 'baz'));
  66. $this->_helper->actionStack($request);
  67. // Aufruf zu /bar/bat hinzufügen
  68. // (BarController::batAction())
  69. $request = clone $this->getRequest();
  70. // Modul nicht setzen, verwende aktuelle Werte
  71. $request->setActionName('bat')
  72. ->setControllerName('bar');
  73. $this->_helper->actionStack($request);
  74. }
  75. }
  76. ]]>
  77. </programlisting>
  78. </example>
  79. </sect3>
  80. <!--
  81. vim:se ts=4 sw=4 et:
  82. -->