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