1 <sect3 id="zend.controller.actionhelpers.actionstack">
2 <title>动作堆栈(助手)</title>
5 <code>动作堆栈</code>助手允许把请求压到<link linkend="zend.controller.plugins.standard.actionstack">动作堆栈</link>前端控制器插件,有效地帮助你在请求期间创建一个动作队列来执行。(动作堆栈)助手允许你通过指定新的请求对象或通过“动作/控制器/模块”集合来添加动作。
9 <title>调用动作堆栈助手来初始化动作堆栈插件</title>
12 调用<code>动作堆栈</code> 助手暗中注册<code>动作堆栈</code> 插件 -- 这就意味着你不需要显性地注册<code>动作堆栈</code> 插件来用这个功能。
16 <example id="zend.controller.actionhelpers.actionstack.simple">
17 <title>用动作、控制器和模块名来添加一个任务</title>
20 经常地,仅仅指定动作、控制器和模块(和可选的参数)最简单,和调用<code>Zend_Controller_Action::_forward()</code>一样:
23 <programlisting role="php"><![CDATA[
24 class FooController extends Zend_Controller_Action
26 public function barAction()
28 // Add two actions to the stack
29 // Add call to /foo/baz/bar/baz
30 // (FooController::bazAction() with request var bar == baz)
31 $this->_helper->actionStack('baz',
34 array('bar' => 'baz'));
36 // Add call to /bar/bat
37 // (BarController::batAction())
38 $this->_helper->actionStack('bat', 'bar');
46 <example id="zend.controller.actionhelpers.actionstack.simple2">
47 <title>使用请求对象添加一个任务</title>
50 有时候请求对象的OOP本性很有用;你也可以传递这样一个对象给<code>动作堆栈</code>助手。
53 <programlisting role="php"><![CDATA[
54 class FooController extends Zend_Controller_Action
56 public function barAction()
58 // Add two actions to the stack
59 // Add call to /foo/baz/bar/baz
60 // (FooController::bazAction() with request var bar == baz)
61 $request = clone $this->getRequest();
62 // Don't set controller or module; use current values
63 $request->setActionName('baz')
64 ->setParams(array('bar' => 'baz'));
65 $this->_helper->actionStack($request);
67 // Add call to /bar/bat
68 // (BarController::batAction())
69 $request = clone $this->getRequest();
70 // don't set module; use current value
71 $request->setActionName('bat')
72 ->setControllerName('bar');
73 $this->_helper->actionStack($request);