牛骨文教育服务平台(让学习变的简单)
博文笔记

yii2之layout布局篇

创建时间:2015-02-11 投稿人: 浏览次数:193

在做网站的过程中,大部分的页面结构都是相似的。如都有相同的头部和底部。各个页面这样仅仅是中间的部分不同。

Yii中的布局文件就是用来实现这样的功能。如:

布局文件:@app/views/layouts/main.php


<!-- 前后的html 、head、body代码就省略了,只看最主要的部分 -->
<header>
</header>
<div class="wrap">
  <div class="container">
    <!-- $content变量的值 就是子页面渲染之后的代码。也就是说子页面中的内容将输出到这个地方-->
    <?= $content ?>
  </div>
</div>
<footer class="footer">
</footer>
后台action:

public function actionIndex()
{
    $this->layout="@app/views/layouts/main.php";
    return $this->render("index");
}

执行顺序为:

  • 先想找index视图文件,
  • 渲染index视图文件 作为变量$output
  • 查找布局文件@app/views/layouts/main.php
  • 如果找到,则把$output值作为变量$content传递到布局文件
  • 把渲染后的布局文件作为结果返回
  • 如果没有找到布局文件,直接把$output作为结果返回

上面这个布局就是一列布局的页面,现在我们再增加另外一个布局:页面显示2列,左侧显示主要的内容,右侧显示统计信息。这个时候怎么办,再写一个和上面基本完全一样的代码吗?

布局文件嵌套(小部件:ContentDecorator)

这个小部件就是专为此功能而生的。

它的功能就是把begin和end之间的内容作为变量$content的值,然后渲染指定的视图文件。

两列布局文件:@app/views/layouts/column_2.php

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。