一. 模板函数  教程https://www.kancloud.cn/manual/thinkphp5/125005

我们往往需要对模板输出变量使用函数,可以使用:

{$data.name|md5} 

编译后的结果是:

<?php echo (md5($data['name'])); ?>

2. ###占位符

如果函数有多个参数需要调用,则使用:

{$create_time|date="y-m-d",###}

表示date函数传入两个参数,每个参数用逗号分割,这里第一个参数是y-m-d,第二个参数是前面要输出的create_time变量,因为该变量是第二个参数,因此需要用###标识变量位置,编译后的结果是:

<?php echo (date("y-m-d",$create_time)); ?>

二.输出默认值

我们可以给变量输出提供默认值,例如:

{$user.nickname|default="这家伙很懒,什么也没留下"}

默认值和函数可以同时使用,例如:

{$Think.get.name|getName|default="名称为空"}

三. 运算符

我们可以对模板输出使用运算符,包括对“+”“-” “*” “/”和“%”的支持。

`在使用运算符的时候,不再支持常规函数用法,例如:

{$user.score+10} //正确的
{$user['score']+10} //正确的
{$user['score']*$user['level']} //正确的
{$user['score']|myFun*10} //错误的
{$user['score']+myFun($user['level'])} //正确的

四. 不输出模板变量的值, 而是原样输出,需要计入literal 标签

{literal}
{$email|md5}
{/literal}

五.模板注释

使用模板注释, 注释不会输出到客服端

格式 {/* */}

{/* 我是注释*/}
{literal}
{$email|md5}
{/literal}

六. 模板标签

1. 循环标签 VOLIST标签

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

{/* 我是注释*/}
{/* name为后台传递的数组, id为循环代号, offset为循环开始的数组下标, length为循环数组下标最大值,
empty数组为空时输出empty, key为list的key名称, */}
{/* mod 输出偶数记录 还可以用来控制一定记录换行 */}
{volist name ="list" id = "data" offset="1" length="3" mod="2" empty="没有数据,我也可以接收变量" }
{eq name="mod" value="2"}<br/>{/eq}
<o>{$key}.{$data.email} <br /></o> {/volist} <p>test</p>
{/*的key=“k" 循环序号默认为i */}
{volist name ="list" id = "data" offset="1" length="3" key="k" empty="没有数据,我也可以接收变量" }
<o>{$k}.{$data.email} <br /></o>
{/volist}
<p>test</p>

2. 循环标签foreach

<body>
{/* 我是注释*/}
{foreach $list as $vo }
<p>{$vo.name}:&emsp;{$vo.email} </p>
{/foreach}
{foreach name="list" item="vo" key="s" }
<p> {$s}&emsp;{$vo.name}:&emsp;{$vo.email} </p>
{/foreach} {foreach name="list" item="vo" }
<p> {$key}&emsp;{$vo.name}:&emsp;{$vo.email} </p>
{/foreach}
</body>

循环标签volist https://www.kancloud.cn/manual/thinkphp5/125017

Volist标签主要用于在模板中循环输出数据集或者多维数组。

{volist name="list" id="vo"}
{$vo.id}:{$vo.name}<br/>
{/volist}  

3.for标签

<body>
{for start="1" end="30" step="2" name="k"}
<p>{$k}</p>
{/for}
{/* 效果等同于在php使用(上式变量符号默认为i 可以用name重定义
for($i = 1; $i < 30; $i+=2)
echo '<p>$i</p>'; */}
</body>

4.比较标签

系统支持的比较标签以及所表示的含义分别是:

标签 含义
eq或者 equal 等于
neq 或者notequal 不等于
gt 大于
egt 大于等于
lt 小于
elt 小于等于
heq 恒等于
nheq 不恒等于

语法

{比较标签 name="变量" value="值"}
内容
{/比较标签}

使用方法

{eq name="name" value="value"}value{/eq}

或者

{equal name="name" value="value"}value{/equal}

也可以支持和else标签混合使用:

{eq name="name" value="value"}
相等
{else/}
不相等
{/eq}

而且还可以支持对变量使用函数 当vo对象的属性值的字符串长度等于5就输出

{eq name="vo:name|strlen" value="5"}{$vo.name}{/eq}

5条件判断 if  switch

1). SWITCH标签

用法:

{switch name="变量" }
{case value="值1" break="0或1"}输出内容1{/case}
{case value="值2"}输出内容2{/case}
{default /}默认情况
{/switch}

使用方法如下:

{switch name="Think.get.type"}
{case value="gif|png|jpg"}图像格式{/case}
{default /}其他格式
{/switch}

表示如果$_GET["type"] 是gif、png或者jpg的话,就判断为图像格式。

2).IF标签

用法示例:

{if condition="($name == 1) OR ($name > 100) "} value1
{elseif condition="$name eq 2"/}value2
{else /} value3
{/if}

除此之外,我们可以在condition属性里面使用php代码,例如:

{if condition="strtoupper($user['name']) neq 'THINKPHP'"}ThinkPHP
{else /} other Framework
{/if}

condition属性可以支持点语法和对象语法,例如: 自动判断user变量是数组还是对象

{if condition="$user.name neq 'ThinkPHP'"}ThinkPHP
{else /} other Framework
{/if}

或者知道user变量是对象

{if condition="$user:name neq 'ThinkPHP'"}ThinkPHP
{else /} other Framework
{/if}

3).范围判断

范围判断标签包括in notin between notbetween四个标签,都用于判断变量是否中某个范围。

IN和NOTIN

我们可以使用in标签来判断模板变量是否在某个范围内,例如:

{in name="id" value="1,2,3"}
id在范围内
{/in}

最后会输出:id在范围内

如果判断不在某个范围内,可以使用notin标签:

{notin name="id" value="1,2,3"}
id不在范围内
{/notin}

最后会输出:id不在范围内

可以把上面两个标签合并成为:

{in name="id" value="1,2,3"}
id在范围内
{else/}
id不在范围内
{/in}

我们可以使用in标签来判断模板变量是否在某个范围内,例如:

{in name="id" value="1,2,3"}
id在范围内
{/in}

最后会输出:id在范围内

如果判断不在某个范围内,可以使用notin标签:

{notin name="id" value="1,2,3"}
id不在范围内
{/notin}

最后会输出:id不在范围内

可以把上面两个标签合并成为:

{in name="id" value="1,2,3"}
id在范围内
{else/}
id不在范围内
{/in}

4).BETWEEN 和 NOTBETWEEN

可以使用between标签来判断变量是否在某个区间范围内,可以使用:

{between name="id" value="1,10"}
输出内容1
{/between}

同样,也可以使用notbetween标签来判断变量不在某个范围内:

{notbetween name="id" value="1,10"}
输出内容2
{/notbetween}

也可以使用else标签把两个用法合并,例如:

{between name="id" value="1,10"}
输出内容1
{else/}
输出内容2
{/between}

当使用between标签的时候,value只需要一个区间范围,也就是只支持两个值,后面的值无效,例如

5). RANGE

也可以直接使用range标签,替换前面的判断用法:

{range name="id" value="1,2,3" type="in"}
输出内容1
{/range}

其中type属性的值可以用in/notin/between/notbetween,其它属性的用法和IN或者BETWEEN一致。

6). PRESENT NOTPRESENT标签

present标签用于判断某个变量是否已经定义,用法:

{present name="name"}
name已经赋值
{/present}

如果判断没有赋值,可以使用:

{notpresent name="name"}
name还没有赋值
{/notpresent}

可以把上面两个标签合并成为:

{present name="name"}
name已经赋值
{else /}
name还没有赋值
{/present}

7).EMPTY NOTEMPTY 标签

empty标签用于判断某个变量是否为空,用法:

{empty name="name"}
name为空值
{/empty}

如果判断没有赋值,可以使用:

{notempty name="name"}
name不为空
{/notempty}

可以把上面两个标签合并成为:

{empty name="name"}
name为空
{else /}
name不为空
{/empty}

8).DEFINED 标签

DEFINED标签用于判断某个常量是否有定义,用法如下:

{defined name="NAME"}
NAME常量已经定义
{/defined}

name属性的值要注意严格大小写

如果判断没有被定义,可以使用:

{notdefined name="NAME"}
NAME常量未定义
{/notdefined}

可以把上面两个标签合并成为:

{defined name="NAME"}
NAME常量已经定义
{else /}
NAME常量未定义
{/defined}

三.模板引入标签

{include file=”文件路径/文件" /}

四.模板继承

thinkphp 模板的更多相关文章

  1. ThinkPHP 模板substr的截取字符串函数

    ThinkPHP 模板substr的截取字符串函数在Common/function.php加上以下代码 /** ** 截取中文字符串 **/ function msubstr($str, $start ...

  2. [转]thinkphp 模板显示display和assign的用法

    thinkphp 模板显示display和assign的用法 $this->assign('name',$value); //在 Action 类里面使用 assign 方法对模板变量赋值,无论 ...

  3. Thinkphp 模板中直接对数据处理 模板中使用函数 中文字符串截取

    1.Thinkphp 模板中直接对数据处理:{$data.name|substr=0,3} 2.中文字符串截取函数:mb_substr=0,14,'utf-8' 3.中文字符串统计:iconv_str ...

  4. ThinkPHP 模板判断输出--Switch 标签

    ThinkPHP 模板引擎支持 switch 判断,根据不同情况输出不同的值,格式如下:<switch name="变量名" >    <case value=& ...

  5. thinkphp模板中foreach循环没数据的错误解决

    从控制器方法中$this->assign();函数将值传递给html模板 但是模板不显示数据,直接出来的是代码,效果就和html中写了php代码不能解析一样. 原来是我将thinkphp框架的引 ...

  6. ThinkPHP 模板截取字符串 【转载】

    对于英文字符可使用如下形式(模板中): {$vo.title|substr=,} 如果是中文字符thinkphp提供了msubstr,用法如下: function msubstr($str, $sta ...

  7. (转) ThinkPHP模板自定义标签使用方法

    这篇文章主要介绍了ThinkPHP模板自定义标签使用方法,需要的朋友可以参考下  转之--http://www.jb51.net/article/51584.htm   使用模板标签可以让网站前台开发 ...

  8. thinkPHP 模板的使用技巧(十三)

    原文:thinkPHP 模板的使用技巧(十三) 模板的使用技巧:页面跳转 .模板包含.模板渲染.模板的继承 页面跳转 <a href='__URL__/index'>我要跳转到首页面,用这 ...

  9. thinkPHP 模板中的语法知识 详细介绍(十二)

    原文:thinkPHP 模板中的语法知识 详细介绍(十二) 本章节:介绍模板中的语法,详细的语法介绍 一.导入CSS和JS文件    ==>记住常量的是大写 1.css link .js  sc ...

  10. 转换器2:ThinkPhp模板转Django模板

    前天写了个<ThinkPhp模板转Flask模板> 居然被同事鄙视了,原因是他用Django,我用Flask,为了避免被他继续安利Django的强大.我决定写一个Django模板转换器. ...

随机推荐

  1. 使用eclipse导入新项目时中文出现乱码问题

    有时候在github上看到别人不错的项目想要拉下来学习学习的时候,总会出现这样的情况,实在蛋疼. 一般出现这种问题,会有三个地方需要改动: 在项目上右键选择 properties 将 text fil ...

  2. 三十七、python中的logging介绍

    A.单文件日志 import logging#定义日志文件#文件格式logging.basicConfig(filename='log.log', format='%(asctime)s-%(name ...

  3. 二十九、pycharm中报错“too many blank lines (3) ”等类似错误

    报错如下图: 解决方法一: 鼠标移至报错处,按住Alt+enter键,选择ignore errors like this 方法二:找到设置File - Settings…… - Editor - In ...

  4. format和urlencode的使用对比

    一:format的基本语法使用 基本语法是通过 {} 和 : 来代替以前的 % . format 函数可以接受不限个参数,位置可以不按顺序. 例如: >>>"{} {}&q ...

  5. SpringBoot系列:二、SpringBoot的配置文件

    SpringBoot的配置文件在resources文件夹下 springboot的配置文件支持两种形式的写法,一种是经典的properties另一种是yml yml通过空格缩进的形式来表示对象的层级关 ...

  6. FutureTask的用法以及两种常用的使用场景

    参考博客:https://blog.csdn.net/linchunquan/article/details/22382487 FutureTask可用于异步获取执行结果或取消执行任务的场景.通过传入 ...

  7. postgresql集群的搭建

    目录 架构图 部署详情 postgresql的安装与配置 pgpool的安装与配置 写在安装前 postgresql是一款很强大的数据库,具体有多强大呢,请谷歌... 网上的相关资料不是很多,参考了大 ...

  8. SSM001/构建maven多模块项目

    一.Idea构建maven多模块项目 1.创建maven项目--创建父模块 [1].File->New->Module... [2].点击next,填写:GroupId,ArtifactI ...

  9. 个人对BFC的见解

    BFC:块级格式化上下文,它是指一个独立的块级渲染区域,只有Block-level BOX参与,该区域拥有一套渲染规则来约束块级盒子的布局,且与区域外部无关. BFC的生成 既然上文提到BFC是一块渲 ...

  10. 版本控制工具 GIT 简要教程

    一,Git 简介 其实这个就不用说了 但是国际惯例还是介绍一下吧; Git 是一个开源的分布式版本控制系统,用于敏捷 高效地处理任何或小或大的项目. Git 是 Linus Torvalds 为了帮助 ...