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');
?>
