[ZF-10089] Zend_Log
[zend.git] / documentation / manual / zh / module_specs / Zend_Controller-ActionHelpers-ActionStack.xml
blob71fee44124353c94783beb3a4ef5d3b82c175e19
1 <sect3 id="zend.controller.actionhelpers.actionstack">
2     <title>动作堆栈(助手)</title>
4     <para>
5         <code>动作堆栈</code>助手允许把请求压到<link linkend="zend.controller.plugins.standard.actionstack">动作堆栈</link>前端控制器插件,有效地帮助你在请求期间创建一个动作队列来执行。(动作堆栈)助手允许你通过指定新的请求对象或通过“动作/控制器/模块”集合来添加动作。
6     </para>
8     <note>
9         <title>调用动作堆栈助手来初始化动作堆栈插件</title>
11         <para>
12             调用<code>动作堆栈</code> 助手暗中注册<code>动作堆栈</code> 插件 -- 这就意味着你不需要显性地注册<code>动作堆栈</code> 插件来用这个功能。
13         </para>
14     </note>
16     <example id="zend.controller.actionhelpers.actionstack.simple">
17         <title>用动作、控制器和模块名来添加一个任务</title>
19         <para>
20             经常地,仅仅指定动作、控制器和模块(和可选的参数)最简单,和调用<code>Zend_Controller_Action::_forward()</code>一样:
21         </para>
23         <programlisting role="php"><![CDATA[
24 class FooController extends Zend_Controller_Action
26     public function barAction()
27     {
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',
32                                     'foo',
33                                     'default',
34                                     array('bar' => 'baz'));
36         // Add call to /bar/bat
37         // (BarController::batAction())
38         $this->_helper->actionStack('bat', 'bar');
39     }
41 ]]>
42         </programlisting>
44     </example>
46     <example id="zend.controller.actionhelpers.actionstack.simple2">
47         <title>使用请求对象添加一个任务</title>
49         <para>
50             有时候请求对象的OOP本性很有用;你也可以传递这样一个对象给<code>动作堆栈</code>助手。
51         </para>
53         <programlisting role="php"><![CDATA[
54 class FooController extends Zend_Controller_Action
56     public function barAction()
57     {
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);
74     }
76 ]]>
77         </programlisting>
78     </example>
79 </sect3>
80 <!--
81 vim:se ts=4 sw=4 et:
82 -->