Zend framework ZF1将模块视图渲染为公共布局
实际上,我正在尝试在ZF1中创建一个模块,我希望它真的像插件一样。主应用程序使用默认布局,该布局位于Zend framework ZF1将模块视图渲染为公共布局,zend-framework,layout,view,render,partial,Zend Framework,Layout,View,Render,Partial,实际上,我正在尝试在ZF1中创建一个模块,我希望它真的像插件一样。主应用程序使用默认布局,该布局位于data/current/views/layouts下 第一个问题,我的模块,默认情况下使用以下布局application/views/layouts/default.phtml。我想要的是使用另一个(见上文)。所以我这样做了: public function init() { parent::init(); $layout = Zend_Layout::getMvcInstanc
data/current/views/layouts
下
第一个问题,我的模块,默认情况下使用以下布局application/views/layouts/default.phtml
。我想要的是使用另一个(见上文)。所以我这样做了:
public function init() {
parent::init();
$layout = Zend_Layout::getMvcInstance();
$layout->setLayoutPath(DATA_PATH . '/view/layouts');
$layout->setLayout('common');
}
第二个问题是,在这个布局(data/current/views/layouts
)中,我实际上渲染了一些局部视图。但是当我试图从模块中设置布局时,我得到了一个错误,因为它找不到那些部分(由于上下文的原因,它现在正试图从模块上下文中加载这些部分)。我不想将这些部分复制到我的模块中,以使其工作(肮脏且不可扩展)。所以问题是:如何只将模块操作(控制器/操作)呈现到公共布局中,而不出现任何局部错误
感谢大家的帮助下面的应用程序正在我的应用程序中工作,我是这样配置的。它工作得很好
protected function _initLayout(){
$layout = explode('/', $_SERVER['REQUEST_URI']);
if(in_array('admin', $layout)){
$layout_dir = 'admin';
}else if(in_array('default', $layout)){
$layout_dir = 'default';
}else{
$layout_dir = 'default';
}
$options = array(
'layout' => 'layout',
'layoutPath' => APPLICATION_PATH."/modules/".$layout_dir."/views/layouts"
);
Zend_Layout::startMvc($options);
}
或者如果你想成为我们的帮手,那么你也可以试试
public function init()
{
$this->_helper->layout->setLayout('front');
}
如果我能为您提供更多帮助,请告诉我。嗨,谢谢您的回答,但它不起作用。正如我所说,我实际上可以显示公共布局。我的问题是,在这个常见的布局中,我渲染了一些局部视图。当尝试从模块访问此布局时,我遇到了一个错误,因为它找不到这些局部视图(可能是因为模块上下文)。谢谢你的帮助,非常感谢是的,模块配置良好。我可以使用任何东西(助手…)。使用
application/views/layouts/default.phtml
中的布局可以正常工作,但由于应用程序本身使用data/current/view/layouts
中的布局,因此我需要使用该布局。同样,我的目标是使模块完全不依赖于应用程序。如果可能,我将使用Zend Framework 2,因为它已经有了即插即用模块的概念