Zend_Layout 高级用法
主要的扩展点是:
定制视图对象
<?php $view = new My_Custom_View(); $layout->setView($view); ?>
定制前端控制器插件
当和MVC组件一起使用,
为这个目的所写的任何插件类将需要扩展
被使用缺省插件类是 定制动作助手
当和MVC组件一起使用,
如果你觉得需要写定制的函数,简单地写一个扩展 定制布局脚本路径解析(Resolution):使用变形器(Inflector)
为翻译布局名到布局脚本路径,
有三个选项来修改变形:通过 Example #1 使用Zend_Layout访问器来修改变形器(inflector)
缺省的 <?php // Set the inflector target: $layout->setInflectorTarget('layouts/:script.:suffix'); // Set the layout view script suffix: $layout->setViewSuffix('php'); ?> Example #2 Zend_Layout 变形器的直接修改
变形器有目标和一个或多个规则。缺省目标和 让我们假设你想用后缀'html'做为布局脚本的文件扩展名,并且想分离混合大小写字和驼峰字为下划线而不是短横线,还不想使用小写字母。另外,你想让它去'layouts'子目录去找脚本。 <?php $layout->getInflector()->setTarget('layouts/:script.:suffix') ->setStaticRule('suffix', 'html') ->setFilterRule(array('CamelCaseToUnderscore')); ?> Example #3 定制变形器(inflectors)
在大多数情况下,修改已存在的变形器已经足够。然而,你可能想有一个在多个地方使用的变形器,并带有不同的对象和类型。 <?php $inflector = new Zend_Filter_Inflector('layouts/:script.:suffix'); $inflector->addRules(array( ':script' => array('CamelCaseToUnderscore'), 'suffix' => 'html' )); $layout->setInflector($inflector); ?>
|