thinkphp 模板
一. 模板函数 教程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}: {$vo.email} </p>
{/foreach}
{foreach name="list" item="vo" key="s" }
<p> {$s} {$vo.name}: {$vo.email} </p>
{/foreach} {foreach name="list" item="vo" }
<p> {$key} {$vo.name}: {$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=”文件路径/文件" /}
四.模板继承
最新文章
- 微小,但是美好的改变 G2 2.2发布
- LeetCode Burst Balloons
- MVC validation
- Android线程消息通信(二)
- [iOS基础控件 - 5.2] 查看大图、缩放图片代码(UIScrollView制作)
- 在Android中访问内置SE和基于SE的卡模拟(一)
- 使用Spring+MySql实现读写分离(一)关于windows下安装mysql5.6
- django基于中间件的IP访问频率控制
- 使用ActionFilterAttribute实现MVC后台授权
- web应用下的安全问题以及tomcat/nginx对应解决方法(持续更新、亲测可解决问题)
- windows批处理命令
- Ensemble_learning 集成学习算法 stacking 算法
- Android6.0执行时权限解析,RxPermissions的使用,自己封装一套权限框架
- bzoj2820-GCD
- javascript 内置类型
- VS2010上写QT代码,但是显示不出来QString的值-解决办法
- ES6-模块导入导出
- wordlist 4
- Boot 横向布局
- @media screen页面自适应尺寸!!
热门文章
- Linux Shell中捕获CTRL+C
- Day3 02判定两个对象的引用是否相同
- 网络流小记(EK&;dinic&;当前弧优化&;费用流)
- debugfs linux rm 删除 恢复 Attempt to read block from filesystem resulted in short read while opening filesystem
- 002-Spring4 快速入门-项目搭建、基于注解的开发bean,Bean创建和装配、基于注解的开发bean,Bean初始化销毁、Bean装配,注解、Bean依赖注入
- Week2 - 669. Trim a Binary Search Tree &; 617. Merge Two Binary Trees
- Dnsmasq 安装配置
- PHP超时提示Fatal error: Maximum execution time of 30,解决方案
- JDBC 国际标准时间
- elementUi--->;实现上传图片效果(upload+formData)