Zend_Layout 快速入门

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()

Note: 助手类和插件类必须传递给startMvc()
为了helperClasspluginClass设置有效,它们必须作为选项传递给startMvc();如果以后设置,它们就没有影响。

范例

下面的例子假定使用$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');
?>

Example #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实例的最简单的方法。

Example #2 使用setOption() 和 setConfig()

有时候在Zend_Layout 对象初始化以后才需要配置;setOptions()setConfig()让你快速而起容易地来做:

<?php
// Using an array of options:
$layout->setOptions($options);

// Using a Zend_Config object:
$layout->setConfig($options);
?>

然而要注意特定的选项,如pluginClasshelperClass,当用这个方法传递,将没有效果;它们需要传递给构造器或者startMvc() 方法。

Example #3 使用访问器

最后,通过访问器来配置Zend_Layout 实例。所有的访问器实现一个流畅的接口,意味这它们的调用可能被链接:

<?php
$layout->setLayout('foo')
       ->setLayoutPath('/path/to/layouts')
       ->setContentKey('CONTENT');
?>

Zend_Layout 快速入门