Yii2如何将布局文件拆分为单独的页眉和页脚?

时间:2014-12-18 11:02:07

标签: php yii2

我是YII2的新手,所以这可能是一个非常基本的问题。

我已经设置了初始申请。我为YII2应用/themes/standard

设置了主题

现在,有一个默认的布局文件themes/standard/layouts/main.php - 它有页眉和页脚的html代码

我想将标题代码分隔为themes/standard/layouts/header.php和页脚到另一个文件

我在main.php

中尝试了类似下面的代码
<?php $this->render("header"); ?>

也尝试了这个

<?php $this->render("//layouts/header"); ?>

但它不会呈现内容。 因为我有主题,所以我不想绝对路径 你能帮助这个人吗?

1 个答案:

答案 0 :(得分:12)

要获得Nested Layouts,您可以使用下面的beginContent()endContent()(例如,在您的main.php布局中):

<?php $this->beginContent('@app/views/layouts/header.php'); ?>
    <!-- You may need to put some content here -->
<?php $this->endContent(); ?>

beginend之间的所有内容都将替换为$content中的header.php


截至Yii2的官方示例:

  

有时您可能希望将一个布局嵌套在另一个布局中。例如,在Web站点的不同部分中,您希望使用不同的布局,而所有这些布局共享相同的基本布局,从而生成整个HTML5页面结构。您可以通过在子布局中调用beginContent()endContent()来实现此目标,如下所示:

<?php $this->beginContent('@app/views/layouts/base.php'); ?>

...child layout content here...

<?php $this->endContent(); ?>
  

如上所示,子布局内容应包含在beginContent()endContent()中。传递给beginContent()的参数指定父布局是什么。它可以是布局文件或别名。   使用上述方法,您可以在多个级别中嵌套布局。

http://www.yiiframework.com/doc-2.0/guide-structure-views.html#nested-layouts