thinkphp5之二

模板继承

模板继承是一项更加灵活的模板布局方式,模板继承不同于模板布局,甚至来说,应该是在模板布局的上层。模板继承其实并不难理解,就好比类的继承一样,模板也可以定义一个基础模板(或者是布局),并且其中定义的相关的区块(block) ,然后继承(extend)该基础模块的子模板中就可以对基础模板中定义的区块进行重载。

因此,模板继承的优势其实是设计基础模块中的区块{block}和子模块中替换这些区块。

每个区块由{block}{/block}标签组成。下面就是基础模板中的一个典型的区块设计。

{
   block name="title"}<title>网站标题</title>{
   /block}

block标签必须指定name属性来标识当前区块的名称,这个标识在当前模板中应该是唯一的,block标签中可以包含任何模板内容,包括其他标签和变量。

{
   block name="title"}<title>{
   $web_title}</title>{
   /block}

一个模板中可以定义任意多个名称标识不重复的区块,例如我们在view视图目录下面定义了一个base .html基础模板:

<html>
<head>
<meta charset="utf-8">
<title>模板继承的演示</title>
</head>
<body>
{(block name="head"}这是头部{/block}
{block name="footer"}这是底部{/block}
</body>
</html>

然后我们在子模板(其实是当前操作的入口模板)中使用继承:

练习

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

{
   extend name="base" /}
{
   block name="head"}这里是子模板里面的区块,用来替换基础模板里面的内容的。{
   /block}
{
   block name="footer"}这里是子模板里面的底部内容。{
   /block}

在这里插入图片描述

上例中,我们可以看到在子模板中使用了extend标签来继承base模板。

在子模板中,可以对基础模板中的区块进行重载定义,如果没有重新定义的话,则表示沿用基础模板中的区块定义,如果定义了一个空的区块,则表示删除基础模板中的该区块内容。

{ block}这个标签,当区块中有这个标记时,就不只是直接重载这个区块,他表示引用所继承模板对应区块的内容到这个位置,最终这个区块是合并后的内容。

练习

在这里插入图片描述
在这里插入图片描述

在当前子模板中,只能定义区块而不能定义其他的模板内容,否则将会直接忽略,并且只能定义基础模板中已经定义的区块。

模板可以多级继承,比如B维承了A,而C又继承了B,最终C中的区块会覆盖B和A中的同名区块,但C和B中的区块必须是A中已定义过的。

子模板中的区块定义顺序是随意的,模板继承的用法关键在于基础模板如何布局和设计规划了,如果结合原来的布局功能,则会更加灵活。

包含文件

在当前模板文件中包含其他的模板文件使用include标签,标签语法:

{
   include file='模板文件1,模板文件2,.....'/}

包含的模板文件中不能再使用模板布局或者模板继承。
路径以项目目录/public/路径下为起点

可以直接包含一个模板文件名(包含完整路径),例如:

{
   include file=" ../ application/index/view/index/lang.html"/}

包含文件中可以再使用include标签包含别的文件,但注意不要形成A包含A。或者A包含B而B又包含A这样的死循环。

练习

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

内置标签

变量输出使用普通标签就足够了,但是要完成其他的控制、循环和判断功能,就需要借助模板引擎的标签库功能了,系统内置标签库的所有标签无需引入即可直接使用。

内置标签包括:

标签名 作用
include 包含外部模板文件(闭合)
load 导入资源文件(闭合 包括js css import别名)
volist 循环数组数据输出
foreach 数组或对象遍历输出
for For循环数据输出
switch 分支判断输出
case 分支判断输出(必须和switch配套使用)
default 默认情况输出(闭合必须和switch配套使用)
compare 比较输出(包括eq neq lt gt egt elt heq nheq等别名)
range 判断范围输出(包括in not in between not between别名)
present 判断是否赋值
notpresent 判断是否尚未赋值
empty 判断数据是否为空
notempty 判断数据是否不为空
defined 判断常量是否定义
notdefined 判断常量是否未定义
define 常量定义(闭合)
assign 变量赋值(闭合)
if 条件判断输出
elseif 条件判断输出(闭合必须和if标签配套使用)
else 条件不成立输出(闭合可用于其他标签)
php 使用php代码VOLIST

循环输出标签

VOLIST标签

volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。在控制器中首先对模板赋值:

$list 
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值