我正在尝试为控制器中的每个操作使用布局。例如,我在索引控制器中有三个操作。这些是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读取的内容?
答案 0 :(得分:4)
可以通过Controller Action帮助程序轻松访问布局功能。您应该能够使用以下行检索布局助手。
$layout= Zend_Controller_Action_HelperBroker::getStaticHelper('Layout');
如果您没有使用Zend_Application或其他方式初始化布局,您可能需要先调用以下内容:
Zend_Layout::startMvc();
答案 1 :(得分:1)
本教程准确说明您的需求,您可以创建一个用于导航的xml并在layout.phtml中显示它
一个简单的例子:
在你的引导程序中
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); ?>
在链接中,您还有其他配置方法。
答案 2 :(得分:1)
对我来说只工作
$layout = Zend_Layout::getMvcInstance();
和
$layout= Zend_Controller_Action_HelperBroker::getStaticHelper('Layout');
没用。