我是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"); ?>
但它不会呈现内容。 因为我有主题,所以我不想绝对路径 你能帮助这个人吗?
答案 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(); ?>
begin
和end
之间的所有内容都将替换为$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