0

我有一个具有以下结构的 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,我可以看到视图脚本的输出,但看不到布局。

4

2 回答 2

2

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

resources.layout.layout = "layout"

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

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

于 2013-02-06T20:43:44.837 回答
0

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

在 Bootstrap.php 中

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

你应该很高兴,如果你想有多个布局并且有不同的条件来使用布局,你应该在这里看看这个答案,这很酷。

于 2013-02-07T04:41:10.300 回答