Zend framework 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

实际上,我正在尝试在ZF1中创建一个模块,我希望它真的像插件一样。主应用程序使用默认布局,该布局位于
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,因为它已经有了即插即用模块的概念