ThinkPHP(8):模板布局和模板继承

   日期:2020-10-05     浏览:104    评论:0    
核心提示:模板布局全局配置比较适用于全站使用相同布局的情况(比如顶部和底部保持不变)1、需要在config目录下的template.php 文件中添加以下配置//开启全局模板布局'layout_on' => true,//全局模板布局文件名'layout_name' => 'layout',2、渲染模板Demo8.php<?phpnamespace app\index\controller;use think\Controller;class De

模板布局

全局配置

比较适用于全站使用相同布局的情况(比如顶部和底部保持不变)

1、需要在config目录下的template.php 文件中添加以下配置

//开启全局模板布局
'layout_on'     =>  true,
//全局模板布局文件名
'layout_name'   =>  'layout',

2、渲染模板

Demo8.php

<?php

namespace app\index\controller;

use think\Controller;


class Demo8 extends Controller
{ 
    public function test1()
    { 
        return $this->view->fetch('test1');
    }
}

模板test1.html

<h2 style="color: blue">我是网站的内容区</h2>

全局模板 layout.html

{ include file="header"}

{ __CONTENT__}

{ include file="footer"}

header.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <h2 style="color: red;">我是网站的顶部</h2>

footer.html

<h2 style="color: green;">我是网站的底部</h2>
</body>
</html>

注:

  • 在不开启layout_on布局模板之前,会直接渲染 application/index/view/Demo8/test1.html 模板文件,开启之后,首先会渲染application/index/view/layout.html 模板,读取layout模板之后会再解析Demo8/test1.html 模板文件
  • 布局模板的写法和其他模板的写法类似,本身也可以支持所有的模板标签以及包含文件,区别在于有一个特定的输出替换变量 {__CONTENT__}
  • layout.html、header.html、footer.html 都是之间放在application/index/view目录下

模板标签(略)

动态方法布局(略)

模板布局文档

模板继承

准备:

  • 如果开启了全局模板布局,先将其关闭
  • 在view下创建public目录,来存放一些基本模板:base.html(必须的)、header.html(网站顶部)、footer.html(网站底部)。后两个可以没有,但是网站一般都有这两个部分(可以以其他名字命名)

Demo8.php

<?php

namespace app\index\controller;

use think\Controller;


class Demo8 extends Controller
{ 
    public function test2()
    { 
        return $this->view->fetch('test2');
    }
}

header.html 和 footer.html与上面相同

base.html

{ include file="public/header" /} 
{ block name="nov"} 导航 { /block}
{ block name="main"} 主题部分 { /block} 

{ include file="public/footer" /}

test2.html

<! -- 继承基础模板 -->

{ extend name="public/base"}

<!--声明区块-->
{ block name="main"}
<h2>我是继承案例的内容</h2>

{ /block}

注:

  • 每个区块由{block} {/block}标签组成,block标签含有一个name属性,用来区别不同的区块
  • 子模板中(test2.html)需要继承继承模板(base.html),使用extend标签,name属性指定模板的位置,这里根路径为view目录
  • 区块的作用可以说就是来占位置的,如果基础模板中的区块没有被声明,则会显示区块中的文字。如果目前不需要只需要占位,可以只声明区块,不添加内容,例如
{ block name="nov"}{ /block}
  • 如果在子模板中想继承父模板中区块的内容可以使用 { block} 标签
  • 继承与类的继承很相似。可以理解为父模板中存在某个区块,子模板中不存在该区块,那就显示父模板中的区块;父模板和子模板中都存在相同区块,那就子模板区块代替父模板区块,显示子模板区块
  • 在区块外的标签内容不会被显示
 
打赏
 本文转载自:网络 
所有权利归属于原作者,如文章来源标示错误或侵犯了您的权利请联系微信13520258486
更多>最近资讯中心
更多>最新资讯中心
0相关评论

推荐图文
推荐资讯中心
点击排行
最新信息
新手指南
采购商服务
供应商服务
交易安全
关注我们
手机网站:
新浪微博:
微信关注:

13520258486

周一至周五 9:00-18:00
(其他时间联系在线客服)

24小时在线客服