Zend Framework - 多个模块,一个布局

时间:2013-02-06 19:57:56

标签: zend-framework module zend-layout

我有一个具有以下结构的Zend应用程序:

application
    configs
        application.ini
    modules
        api
            controllers
            Bootstrap.php
        default
            controllers
                IndexController.php
            models
            views
                scripts
                    index
                        index.phtml
                layouts
                    layout.phtml
            Bootstrap.php

我的application / configs / application.ini如下所示:

phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
appnamespace = "Application"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"
resources.frontController.params.displayExceptions = 0
resources.db.adapter = "PDO_SQLITE"
resources.db.params.dbname = APPLICATION_PATH "/../data/db/test.sqlite3"

resources.modules = ""

resources.frontController.params.prefixDefaultModule = "1"
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules"
resources.layout.layoutPath = APPLICATION_PATH "/modules/default/views/layout/"

我的问题是,无论我做什么,我都不能使用布局。 如果我转到http://test.app/index/index,我可以看到视图脚本的输出,但不能看到布局。

2 个答案:

答案 0 :(得分:2)

我看到你指定了布局路径,但从未指定要使用的实际布局文件。假设布局名为layout.phtml,请将其添加到应用程序的内容中。

resources.layout.layout = "layout"

如果您需要使用多个布局,则可以在每个操作/控制器级别上覆盖。在控制器中,您可以通过$this->_helper->layout()进入布局 然后,您有以下方法:setLayoutPath()setLayout()disableLayout()

参考:http://framework.zend.com/manual/1.12/en/learning.layout.usage.html

答案 1 :(得分:0)

您需要在Bootstrap.php或application.ini中初始化您的布局文件才能使用它,您还没有声明要使用哪个文件。

  

在Bootstrap.php中

function _initViewHelpers()
{
    $this->bootstrap('layout');
    $layout = $this->getResource('layout');
    $view = $layout->getView();
}

你应该好好去,如果你想拥有多个布局并且使用不同的条件来使用布局你应该看this answer here这很酷。