Zend_Layout-Options.xml 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. <sect1 id="zend.layout.options">
  2. <title>Zend_Layout 配置选项</title>
  3. <para>
  4. <code>Zend_Layout</code>有多种配置选项。这些都可以用调用适当的访问器来设置,传递数组或<code>Zend_Config</code>对象给构造器或<code>startMvc()</code>,传递选项数组给<code>setOptions()</code>,或传递<code>Zend_Config</code>对象给to <code>setConfig()</code>。
  5. </para>
  6. <itemizedlist>
  7. <listitem><para>
  8. <emphasis>layout</emphasis>:被使用的布局。使用当前变形器来解析提供给合适的布局视图脚本的名称。缺省地,这个值是'layout'并解析为'layout.phtml'。访问器是<code>setLayout()</code> 和 <code>getLayout()</code>。
  9. </para></listitem>
  10. <listitem><para>
  11. <emphasis>layoutPath</emphasis>: 布局视图脚本的基本路径。访问器是<code>setLayoutPath()</code> 和 <code>getLayoutPath()</code>。
  12. </para></listitem>
  13. <listitem><para>
  14. <emphasis>contentKey</emphasis>: 用于缺省内容(和MVC一起使用)的布局变量。缺省值是'content'。访问器是<code>setContentKey()</code> 和 <code>getContentKey()</code>。
  15. </para></listitem>
  16. <listitem><para>
  17. <emphasis>mvcSuccessfulActionOnly</emphasis>: 当使用MVC,当动作抛出一个异常并且这个标志为true,布局将不被解析(这是为了防止当<link linkend="zend.controller.plugins.standard.errorhandler">ErrorHandler plugin</link> 在使用时,布局被双重解析)。缺省地,这个标记是true。访问器是<code>setMvcSuccessfulActionOnly()</code> 和 <code>getMvcSuccessfulActionOnly()</code>。
  18. </para></listitem>
  19. <listitem><para>
  20. <emphasis>view</emphasis>: 当解析时使用的视图对象。当和MVC一起使用时,如果没有视图对象被显式传递,<code>Zend_Layout</code> 将尝试使用用<link linkend="zend.controller.actionhelpers.viewrenderer">the ViewRenderer</link> 注册的视图对象。访问器是<code>setView()</code> 和 <code>getView()</code>。
  21. </para></listitem>
  22. <listitem><para>
  23. <emphasis>helperClass</emphasis>: 当和MVC组件一起使用<code>Zend_Layout</code> 时的动作助手。 缺省是 <code>Zend_Layout_Controller_Action_Helper_Layout</code>。访问器是 <code>setHelperClass()</code> 和 <code>getHelperClass()</code>。
  24. </para></listitem>
  25. <listitem><para>
  26. <emphasis>pluginClass</emphasis>: 当和MVC组件一起使用<code>Zend_Layout</code> 时的前端控制器插件类。缺省是 <code>Zend_Layout_Controller_Plugin_Layout</code>。访问器是 <code>setPluginClass()</code> 和 <code>getPluginClass()</code>。
  27. </para></listitem>
  28. <listitem><para>
  29. <emphasis>inflector</emphasis>: 当解析布局名给布局视图脚本路径时的变形器;参见<link linkend="zend.layout.advanced.inflector"> <code>Zend_Layout</code> 变形器文档有更多细节 </link>。访问器是 <code>setInflector()</code> 和 <code>getInflector()</code>。
  30. </para></listitem>
  31. </itemizedlist>
  32. <note>
  33. <title>助手类和插件类必须传递给startMvc()</title>
  34. <para>
  35. 为了<code>helperClass</code>和<code>pluginClass</code>设置有效,它们必须作为选项传递给<code>startMvc()</code>;如果以后设置,它们就没有影响。
  36. </para>
  37. </note>
  38. <sect2 id="zend.layout.options.examples">
  39. <title>范例</title>
  40. <para>
  41. 下面的例子假定使用<code>$options</code>数组和<code>$config</code>对象:
  42. </para>
  43. <programlisting role="php"><![CDATA[<?php
  44. $options = array(
  45. 'layout' => 'foo',
  46. 'layoutPath' => '/path/to/layouts',
  47. 'contentKey' => 'CONTENT', // ignored when MVC not used
  48. );
  49. ?>]]></programlisting>
  50. <programlisting role="php"><![CDATA[<?php
  51. /**
  52. [layout]
  53. layout = "foo"
  54. layoutPath = "/path/to/layouts"
  55. contentKey = "CONTENT"
  56. */
  57. $config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');
  58. ?>]]></programlisting>
  59. <example id="zend.layout.options.examples.constructor">
  60. <title>传递选项给构造器或startMvc()</title>
  61. <para>
  62. 为了配置<code>Zend_Layout</code>实例,构造器和<code>startMvc()</code> 静态方法都可以接受选项数组或带有选项的<code>Zend_Config</code> 对象。
  63. </para>
  64. <para>
  65. 首先,看一下传递数组:
  66. </para>
  67. <programlisting role="php"><![CDATA[<?php
  68. // Using constructor:
  69. $layout = new Zend_Layout($options);
  70. // Using startMvc():
  71. $layout = Zend_Layout::startMvc($options);
  72. ?>]]></programlisting>
  73. <para>
  74. 现在使用配置对象:
  75. </para>
  76. <programlisting role="php"><![CDATA[<?php
  77. $config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');
  78. // Using constructor:
  79. $layout = new Zend_Layout($config);
  80. // Using startMvc():
  81. $layout = Zend_Layout::startMvc($config);
  82. ?>]]></programlisting>
  83. <para>
  84. 基本上,这是定制<code>Zend_Layout</code>实例的最简单的方法。
  85. </para>
  86. </example>
  87. <example id="zend.layout.options.examples.setoptionsconfig">
  88. <title>使用setOption() 和 setConfig()</title>
  89. <para>
  90. 有时候在<code>Zend_Layout</code> 对象初始化以后才需要配置;<code>setOptions()</code> 和 <code>setConfig()</code>让你快速而起容易地来做:
  91. </para>
  92. <programlisting role="php"><![CDATA[<?php
  93. // Using an array of options:
  94. $layout->setOptions($options);
  95. // Using a Zend_Config object:
  96. $layout->setConfig($options);
  97. ?>]]></programlisting>
  98. <para>
  99. 然而要注意特定的选项,如<code>pluginClass</code> 和 <code>helperClass</code>,当用这个方法传递,将没有效果;它们需要传递给构造器或者<code>startMvc()</code> 方法。
  100. </para>
  101. </example>
  102. <example id="zend.layout.options.examples.accessors">
  103. <title>使用访问器</title>
  104. <para>
  105. 最后,通过访问器来配置<code>Zend_Layout</code> 实例。所有的访问器实现一个流畅的接口,意味这它们的调用可能被链接:
  106. </para>
  107. <programlisting role="php"><![CDATA[<?php
  108. $layout->setLayout('foo')
  109. ->setLayoutPath('/path/to/layouts')
  110. ->setContentKey('CONTENT');
  111. ?>]]></programlisting>
  112. </example>
  113. </sect2>
  114. </sect1>
  115. <!--
  116. vim:se ts=4 sw=4 et:
  117. -->