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() ようなメソッドを介してレイアウトに到達できます。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 に答える