Zend Framework:如何附加默认布局以外的其他内容

时间:2011-07-01 12:18:49

标签: php zend-framework

我创建了一个模块'admin'。我还为此管理模块创建了一个布局。如何将此布局永久附加到“admin”模块。有人可以建议我在哪里以及如何为此目的编写代码。它是否会在bootstrap文件中?

3 个答案:

答案 0 :(得分:1)

如果这是一个像你说的模块,你可以简单地将layout.phtml文件添加到模块的layout / scripts /文件夹中。

如果您的layout.phtml有不同的名称,例如admin.phtml,您只需在控制器中添加以下内容

$this->_helper->layout->setLayout('admin');

应首先检查模块的布局文件夹,然后检查默认文件夹。

答案 1 :(得分:0)

您可以为布局脚本指定备用路径:

if (!$registered) {
//for PUBLIC role
  Zend_Layout::getMvcInstance()->setLayoutPath(APPLICATION_PATH.'/layouts/scripts/pub');
} else {
//For registered users
  Zend_Layout::getMvcInstance()->setLayoutPath(APPLICATION_PATH.'/layouts/scripts');
}

答案 2 :(得分:0)

在你的bootstrap文件中

protected function _initAutoloader() {
        $autoloader = new Zend_Application_Module_Autoloader(array(
            'namespace' => '',
            'basePath'  => APPLICATION_PATH . '/modules/default'), array(
            'namespace' => 'Admin',
            'basePath'  => APPLICATION_PATH . '/modules/admin'
        )            
      );
      return $autoloader;

    }

的application.ini

phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1
resources.frontController.params.displayExceptions = 1
includePaths.library = APPLICATION_PATH "/../library"
appnamespace = "Default"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.defaultModule = "default"
resources.frontController.defaultController = "index"
resources.frontController.defaultAction = "index"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts"
resources.layout.layout = "layout"
resources.modules = ""
resources.view[] =

在管理员的每个控制器中,您需要将此行添加到init函数以更改布局。

$这 - > _helper->布局() - > setLayout的( “管理员”);