我实际上是想在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
)中,我实际上渲染了一些局部视图。但是当我尝试从模块设置布局时,我得到一个错误,因为它无法找到那些部分(因为上下文,它现在正试图从模块上下文加载那些部分)。我不想将这些部分复制到我的模块中以使其工作(脏和不可伸缩)。所以问题是:如何将模块操作(控制器/操作)渲染到公共布局中,但没有任何部分错误?
感谢所有人的帮助
答案 0 :(得分:0)
在我的应用程序中工作我是这样配置的。它运作得很好。
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');
}
请告诉我是否可以为您提供更多帮助。