3

我正在尝试为控制器中的每个操作使用布局。例如,我在索引控制器中有三个动作。它们是 indexAction、testAction 和 welcomeAction。我创建了三个 xml 布局文件。index.xml、test.xml 和welcome.xml。最后,我创建了一个插件。

class Moon_Layout_Append extends Zend_Controller_Plugin_Abstract{

 public function preDispatch($request){


  $layoutFile = APPLICATION_PATH."/Modules/".$request->module."/layout/".$request->action.".xml";

  $layout = new Zend_Config_Xml($layoutFile,'index');


 }

}

问题是...如何访问布局对象以设置从 xml 读取的内容?

4

3 回答 3

4

布局功能可以通过控制器动作助手轻松访问。您应该能够使用以下行检索布局助手。

$layout= Zend_Controller_Action_HelperBroker::getStaticHelper('Layout');

如果您不使用 Zend_Application 或其他初始化布局的方式,您可能需要先调用以下代码:

Zend_Layout::startMvc();
于 2009-10-25T04:03:23.420 回答
1

本教程准确地告诉您需要什么,您可以创建一个用于导航的 xml 并将其显示在您的 layout.phtml 中

http://www.goodcomputingtips.com/site/2010/09/part-5-adding-menus-using-zend_navigation-a-not-so-quick-quickstart-to-zend-framework/

一个简单的例子:

在您的引导程序中

protected function _initNavigation() {
$this->bootstrap("layout");
$layout = $this->getResource('layout');     
$view = $layout->getView();

$config = new Zend_Config_Xml(APPLICATION_PATH . '/configs/navigation.xml','nav');
$navigation = new Zend_Navigation($config);

$view->navigation($navigation); }

在你的 layout.phtml

<?php echo $this->navigation()->menu()->setMaxDepth(1); ?>

在链接中,您还有其他配置方式。

于 2011-07-24T04:06:47.710 回答
1

对我来说只工作

$layout = Zend_Layout::getMvcInstance(); 

 $layout= Zend_Controller_Action_HelperBroker::getStaticHelper('Layout');

没用。

于 2012-04-29T12:24:07.903 回答