22.3. Zend_Layout 配置选项
Zend_Layout
有多种配置选项。这些都可以用调用适当的访问器来设置,传递数组或Zend_Config
对象给构造器或startMvc()
,传递选项数组给setOptions()
,或传递Zend_Config
对象给to setConfig()
。
layout:被使用的布局。使用当前变形器来解析提供给合适的布局视图脚本的名称。缺省地,这个值是'layout'并解析为'layout.pHTML'。访问器是
setLayout()
和getLayout()
。layoutPath: 布局视图脚本的基本路径。访问器是
setLayoutPath()
和getLayoutPath()
。contentKey: 用于缺省内容(和MVC一起使用)的布局变量。缺省值是'content'。访问器是
setContentKey()
和getContentKey()
。mvcSuccessfulActionOnly: 当使用MVC,当动作抛出一个异常并且这个标志为true,布局将不被解析(这是为了防止当ErrorHandler plugin 在使用时,布局被双重解析)。缺省地,这个标记是true。访问器是
setMvcSuccessfulActionOnly()
和getMvcSuccessfulActionOnly()
。view: 当解析时使用的视图对象。当和MVC一起使用时,如果没有视图对象被显式传递,
Zend_Layout
将尝试使用用the ViewRenderer 注册的视图对象。访问器是setView()
和getView()
。helperClass: 当和MVC组件一起使用
Zend_Layout
时的动作助手。 缺省是Zend_Layout_Controller_Action_Helper_Layout
。访问器是setHelperClass()
和getHelperClass()
。pluginClass: 当和MVC组件一起使用
Zend_Layout
时的前端控制器插件类。缺省是Zend_Layout_Controller_Plugin_Layout
。访问器是setPluginClass()
和getPluginClass()
。inflector: 当解析布局名给布局视图脚本路径时的变形器;参见
Zend_Layout
变形器文档有更多细节 。访问器是setInflector()
和getInflector()
。
助手类和插件类必须传递给startMvc() | |
---|---|
为了 |
22.3.1. 范例
下面的例子假定使用$options
数组和$config
对象:
<?PHP $options = array( 'layout' => 'foo', 'layoutPath' => '/path/to/layouts', 'contentKey' => 'CONTENT', // ignored when MVC not used ); ?>
<?php /** [layout] layout = "foo" layoutPath = "/path/to/layouts" contentKey = "CONTENT" */ $config = new Zend_Config_Ini('/path/to/layout.ini', 'layout'); ?>
例 22.1. 传递选项给构造器或startMvc()
为了配置Zend_Layout
实例,构造器和startMvc()
静态方法都可以接受选项数组或带有选项的Zend_Config
对象。
首先,看一下传递数组:
<?php // Using constructor: $layout = new Zend_Layout($options); // Using startMvc(): $layout = Zend_Layout::startMvc($options); ?>
现在使用配置对象:
<?php $config = new Zend_Config_Ini('/path/to/layout.ini', 'layout'); // Using constructor: $layout = new Zend_Layout($config); // Using startMvc(): $layout = Zend_Layout::startMvc($config); ?>
基本上,这是定制Zend_Layout
实例的最简单的方法。
例 22.2. 使用setOption() 和 setConfig()
有时候在Zend_Layout
对象初始化以后才需要配置;setOptions()
和 setConfig()
让你快速而起容易地来做:
<?php // Using an array of options: $layout->setOptions($options); // Using a Zend_Config object: $layout->setConfig($options); ?>
然而要注意特定的选项,如pluginClass
和 helperClass
,当用这个方法传递,将没有效果;它们需要传递给构造器或者startMvc()
方法。
例 22.3. 使用访问器
最后,通过访问器来配置Zend_Layout
实例。所有的访问器实现一个流畅的接口,意味这它们的调用可能被链接:
<?php $layout->setLayout('foo') ->setLayoutPath('/path/to/layouts') ->setContentKey('CONTENT'); ?>