在我的.phtml文件中,我告诉它'使用'我创建的layout.phtml文件?

时间:2010-02-28 18:20:37

标签: php zend-framework layout

我有点失落。

我做了一个'主页',我想要一个页面使用。我在哪里声明它?

MainLayout.phtml

<html>
    <head>
    </head>
    <body>  
        <?php echo $this->layout()->content; ?>
        <div>
            <ul>        
                <li><a href="#">Navigation</a></li>
                <li><a href="#">Navigation</a></li>
                <li><a href="#">Navigation</a></li>
                <li><a href="#">Navigation</a></li>
                <li><a href="#">Navigation</a></li>
            </ul>
        </div>
    </body>
</html>

Index.phtml

<?php echo $this->doctype() ?>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
    <head>
        <?php echo $this->headMeta() ?>
        <meta name="language" content="en" />
        <title><?php echo $this->escape($this->title) ?></title>
    </head>
    <body>
        <h1>This is the first page I made.</h1>

    </body>
</html>

我正在使用Zend框架。

2 个答案:

答案 0 :(得分:3)

基本上,Pascal所说的是正确的:当使用Zend_Layout时,它会将视图脚本的内容插入到主布局中

echo $this->layout()->content;

被调用。由于它是插入,因此您不包括整个HTML页面。在您的示例中,模板和布局都包含带有HTML,HEAD和BODY元素的完整页面,从而导致标记无效。

但是,由于在布局脚本之前处理了View脚本,您可以使用

从View脚本到layout helper设置布局
$this->layout()->setLayout('foo');

您也可以从控制器

设置布局
$this->_helper->layout->disableLayout();

当然,和ZF中的其他内容一样,它也可以从application.ini进行配置。 Zend_Layout Quickstart是了解此组件的最佳开始。

答案 1 :(得分:1)

您没有在index.phtml中嵌入layout.phtml的任何文件中说明:Zend_Layout组件会为您执行此操作:

  • 内容将由页面(使用index.phtml)
  • 生成
  • 它将被注入布局content属性中(当然,该属性的名称是可配置的)

但所有这些都必须配置 - 通常来自你的Bootstrap文件,或使用一些配置文件。


有关更多信息和详细说明以及示例,您可能需要查看: