1

我实际上是在尝试在 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) 中,我实际上是在渲染一些局部视图。但是当我尝试从模块设置布局时,我得到了一个错误,因为它找不到那些部分(因为上下文,它现在正试图从模块上下文中加载那些部分)。我不想将这些部分复制到我的模块中以使其工作(脏且不可扩展)。所以问题是:如何将模块操作(控制器/操作)渲染到通用布局中但没有任何部分错误?

感谢大家的帮助

4

1 回答 1

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');
}

让我知道我是否可以为您提供更多帮助。

于 2013-06-13T08:54:16.740 回答