php – 如何在Zend_Application中使用多个视图(使用Zend_Layout)
我有一个布局有4个单独的“块”.他们是:
>带有菜单和面包屑的导航面板.这是使用Zend_Navigation构造的. 内容区域符合Zend_Application文档所述的传统单一视图模型,但其他三种模型不符合.它们都有合理的默认视图可供使用,但控制器需要能够在需要时覆盖它们.例如,管理页面覆盖“新闻”视图以显示系统上最近采取的管理操作的日志是有意义的. 然而,Zend_Layout / Zend_Application示例都假定单个视图(它们调用<?php echo $this-> layout() – > content;?>. 如何才能实现这种覆盖布局?我想到的唯一解决方案是在Zend_Registry中存储被覆盖的Zend_Views,但这看起来像是用胶带把东西放在一起;) 解决方法
我相信你所指的是“命名段”. Zend Framework的响应对象支持这些所谓的“命名段”,并允许您将主体内容分成不同的段.
例如,采用以下布局文件: <div id="nav"> <?php echo $this->layout()->nav ?> </div> <div id="content"> <?php echo $this->layout()->content ?> </div> 这里有2个命名段,分别是“内容”和“导航”.默认情况下,视图脚本的输出将呈现为“内容”段.为了将输出呈现到“nav”段,您可以在控制器中执行以下操作: <?php $response = $this->getResponse(); $response->insert('nav',$view->render('nav.phtml')); ?> 与ActionStack操作助手一起使用时,此功能特别有用.例如,您处于管理页面,并且您想要覆盖“nav”部分,然后您可以确定每个控制器要将哪个部分渲染到该段.解释这个的最好方法是通过代码示例: <?php class PageController extends Zend_Controller_Action { public function barAction() { // this would render the output of NavController::menuAction() // to the "nav" segment (note how we set the response segment in the // NavController in order to do this) $this->_helper->actionStack('menu','nav'); } } class NavController extends Zend_Controller_Action { public function menuAction() { $this->_helper->viewRenderer->setResponseSegment('nav'); // do stuff } } ?> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |