ThinkPHP 模版中的内置标签
内置标签就是模版引擎提供的一组可以完成控制、循环和判断功能的类似HTML语法的标签。
一、判断比较:
1、if标签进行条件判断
//if语句的完整格式
<if condition="$user eq '蜡笔小新'">
小新
<elseif condition="$user eq '黑崎一护'" />
一护
<else />
错误
</if>
//condition 条件里可以使用
PHP 函数
<if condition="mb_substr($user,0,3,'UTF-8') eq '蜡笔小'">
//condition 条件里使用点语法,智能判断数组或对象
<if condition="$data.user eq '蜡笔小新'">
//condition 条件里使用冒号语法,直接使用对象
<if condition="$data:user eq '蜡笔小新'">
//condition 条件里使用系统变量
<if condition="$Think.get.user eq '蜡笔小新'">
2、Switch 标签
//name 的值和 IF语句一样,可以是变量、数组、对象、函数或系统变量
<switch name="user">(变量不需要$符号)
<case value="蜡笔小新">小新</case>
<case value="黑崎一护">一护</case>
<default />错误
</switch>
3、比较标签
标签 含义
eq 或 equal 等于
neq 或 notequal 不等于
gt 大于
egt 大于等于
lt 小于
elt 小于等于
heq 恒等于
nheq 不恒等于
//控制器变量$user=蜡笔小新,输出小新
<eq name="user"value="蜡笔小新">小新</eq>(变量不需要$符号)
PS:比较标签还提供了一个统一标签 compare,比较类型通过type属性完成。
//compare 统一方法
<compare type="eq"name="user"value="蜡笔小新">小新</compare> (变量不需要$符号)
4、范围判断标签
ThinkPHP 提供了一组范围判断标签:in、notin、between、notbetween四个标签,都用于判断变量是否在某个范围中。
//如果 id是1,2,3任意一个将输出
<in name="id"value="1,2,3">id在范围内</in>
//in 标签,支持
else
<in name="id"value="1,2,3">
id在范围内
<else/>
id不在范围内
</in>
//notin 标签,正好相反
<notin name="id"value="1,2,3">id不在范围内</notin>
//between标签,从哪里到哪里的范围
<between name="id"value="1,10">id在范围内</between>
//notbetween标签,从哪里到哪里的范围
<notbetween
name="id"value="1,10">id不在范围内</notbetween>
PS://range标签,可以统一in、notin、between和notbetween
<range name="id"value="1,2,3"type="in">id在范围内</range>
PS://name值可以是系统变量
<in name="Think.get.id"value="1,2,3">id在范围内</in>(变量不需要$符号)
//value值可以是变量或系统变量
<in name="id"value="$Think.get.range">id在范围内</in>(变量需要$符号)
5、判断变量的标签
//判断变量是否已赋值,赋值了就输出,空字符串、0也算赋值
<present name="user">user已经赋值</present>
//判断变量是否已赋值,没有创建或赋值为null,都算没有值
<notpresent
name="user">user还没有值</notpresent>
//判断变量是否已赋值,组合
<present name="user">
user已赋值
<else />
user未赋值
</present>
//判断变量是否已赋值,系统变量
<present name="Think.get.user">$_GET['user']已赋值</present>
PS:present标签底层调用的是isset函数
//判断变量是否为空,空则输出(null、0、空字符串均为未赋值)
<empty name="user">user为空值</empty>
//判断变量是否为空,不空则输出
<notempty
name="user">user不为空值</notempty>
//判断变量是否为空,组合
<empty name="user">
user为空值
<else />
user不为空值
</empty>
//判断变量是否为空,系统变量
<empty name="Think.get.user">$_GET['user']为空值</empty>
//判断常量是否定义,定义了输出
PS:empty标签底层调用的是empty函数
<definedname="APP_PATH">APP_PATH常量已定义</defined>
//判断常量是否定义,没定义输出
<notdefined
name="APP_PATH">APP_PATH常量未定义</notdefined>
//判断常量是否定义,组合
<defined name="APP_PATH">
APP_PATH常量已定义
<else />
APP_PATH常量未定义
</defined>
二、遍历循环
1、Volist标签
Volist 标签:通常用于查询数据集的结果输出,通过select()方法返回的是一个二
维数组,可以直接使用 volist 标签进行输出。
<ul>
<volist name="data"id="arr">
<li>{$arr.id} -- {$arr.user} -- {$arr.mail}</li>
</volist>
</ul>
PS:这里的 name="data"中的data是控制器给模版定义的数据变量,要对应;这里
的 id="arr"中的
arr 是将要遍历循环的数组名,可以自定义。
//offset 从第几条开始,起始值0,length共多少条
<volistname="data"id="arr"offset="5"length="10">
<li>{$arr.id} -- {$arr.user} -- {$arr.mail}</li>
</volist>
//mod 求当前余数,当前index除以2余1,输出偶数
<volistname="data"id="vo"mod="2">
<eq name="mod"value="1">
<li>{$vo.id} -- {$vo.user} -- {$vo.mail}</li>
</eq>
</volist>
//没有数据的情况下使用empty填充
<volistname="data"id="vo"empty="没有任何数据">
<li>{$vo.id} -- {$vo.user} -- {$vo.mail}</li>
</volist>
//empty 属性不支持HTML直接输入,但可以通过变量输出
$this->assign('empty','<span style="color:red">没有任何数据</span>');
<volistname="data"id="vo"empty="$empty">
//通过key输出循环遍历的变量
<volistname="data"id="vo"key="k">
<li>{$k} -- {$vo.id} -- {$vo.user} -- {$vo.mail}</li>
</volist>
//没有指定k,也可以用i变量输出
<li>{$i} -- {$vo.id} -- {$vo.user} -- {$vo.mail}</li>
//key 变量,可以直接输出索引值,从0开始
<li>{$key} -- {$vo.id} -- {$vo.user} -- {$vo.mail}</li>
2、foreach标签
Foreach 标签和Volist标签类似,只不过
Foreach 标签更加简单,没有额外属性。
//只支持key属性,但{$key}变量支持
<ul>
<foreach name="data"item="vo">
<ul>{$vo.id} -- {$vo.user}</ul>
</foreach>
</ul>
3、for标签
For标签就是简单的循环标签。
//从1到99循环
<forstart="1"end="100">
{$i}<br/>
</for>
除了start和end必须值,还有三个可选值。comparison是大于还是小于,默认值为lt
(<) ;name是循环变量名,默认值为i;step是步进值,默认为1。
//完整形式
<forstart="1"end="100"comparison="lt"step="2"name="k">
{$i}<br/>
</for>
三.其他标签
ThinkPHP
模版中还有一些其他标签。
1、//在模版中定义变量,value值可以为变量($user)或系统变量($Think.get.user)
<assignname="var"value="123"
/>
{$var}
//在模版中定义常量,value值可以为变量($user)或系统变量($Think.get.user)
<definename="MY_NAME"value="Lee"
/>
{$Think.const.MY_NAME}
2、import导入标签可以智能的导入
js 和 css
文件
//常规引入方法
<scripttype="text/javascript"src="__PUBLIC__/js/index.js"></script>
<link rel="stylesheet"type="text/css"
href="__PUBLIC__/css/index.css" />
//使用import
导入,js和
css是目录
<importtype="js"file="js.index"
/>
<import type="css"file="css.index"
/>
//使用import
导入,basepath修改默认路径
<importtype="js"file="js.index"basepath="./Common"
/>
3、load加载标签可以智能的加载
js 和 css
文件
//使用load
加载
<loadhref="__PUBLIC__/js/index.js"
/>
<load href="__PUBLIC__/css/index.css" />
系统还提供了专用 js和
css标签,专门用于加载
4、//使用专用标签
<jshref="__PUBLIC__/js/index.js"
/>
<css href="__PUBLIC__/css/index.css" />
5、PHP代码可以和标签在模版文件中混合使用, 可以在模版文件里面书写任意的
PHP语句
代码。
//使用php
标签
<php>
$a = 1;
$b = 2;
echo $a + $b;
</php>
//使用php
语法
<?php
$a = 1;
$b = 2;
echo $a + $b;
?>
6、如果想原样输出标签极其内容,可以使用literal
标签
//原样输出
<literal>
<php>echo 123;</php>
</literal>
ThinkPHP 模版中的内置标签的更多相关文章
- ThinkPHP中的内置标签
ThinkPHP中的内置标签 1.内置标签分类 闭合标签 <tag></tag> 开放标签 <tag /> 2.包含文件标签 主要功能:实现对文件的包含(类似于re ...
- Thinkphp中的内置标签用法
Thinkphp中的内置标签有:Volist,Foreach,For,Switch,比较标签,范围判断标签,IF,Present,Empty,Defined,Assign,Define,标签嵌套,im ...
- 8. Smarty3:模版中的内置函数
smarty3中对内置函数的修改比較大,加入了很多新的功能:变量声明.表达式,流程控制,函数.数组等.可是建议不要在模版中去使用过于复杂的逻辑,而是要尽量将一些程序设计逻辑写到PHP中,并在模版中採用 ...
- thinkphp 内置标签volist 控制换行
thinkphp 内置标签volist 控制换行 volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行 ...
- thinkphp内置标签简单讲解
thinkphp内置标签简单讲解 1.volist循环 name 需要遍历的数据 id 类似于foreach中 value offset 截取数据起始位置 length 截取数据的个数 mod 奇偶数 ...
- JSP内置标签 JSP中JavaBean标签 JSP开发模式 EL和JSTL快速入门
2 JSP内置标签(美化+业务逻辑) 1)为了取代<%%>脚本形式,使用JSP标签/JSP动作,目的:与JSP页面的美化,即JSP面页都是由标签组成,不再有其它的内容 2)JSP内 ...
- django中模板变量与内置标签以及过滤器
本文参考 官方文档 . 一 模板变量 格式: {{ variable_name }} variable_name 命名规则与变量命名规则类似,允许字符数字下划线,不允许标点. variable_ ...
- thinkphp5内置标签
thinkphp5内置标签 知道内置标签怎么用,查手册的时候好查 却功能的时候在里面找着来用 内置标签一览 内置标签 变量输出使用普通标签就足够了,但是要完成其他的控制.循环和判断功能,就需要借助模板 ...
- Django内置标签
在Django中也提供了大量Django自带的内置标签来供我们使用.标签的写法与过滤器的写法不同,标签是具有开始和结束的,例如:{% if %}为开始标签,{% endif %}为结束标签. 可以查 ...
随机推荐
- Neo4j文档
Neo4j 图数据库 主要有节点和关系,关系是有向边,节点和关系都有属性,属性是键值对 Neo4j使用CQL语句,代表Cypher查询语言 相当于SQL 统一声明 在所有的语句中均有结构 <no ...
- element-ui表格列金额显示两位小数
对于金额的显示,大多情况下需要保留两位小数,比如下面的(表格采用 element-ui): 在vue.js中,对文本的处理通常是通过设置一系列的过滤器,过滤器可以用在两个地方:双花括号插值 和 v-b ...
- BMDP为常规的统计分析提供了大量的完备的函数系统,如:方差分析(ANOVA)、回归分析(Regression)、非参数分析(Nonparametric Analysis)、时间序列(Times Series)等等。此外,BMDP特别擅于进行出色的生存分析(Survival Analysis )。许多年来,一大批世界范围内顶级的统计学家都曾今参与过BMDP的开发工作。这不仅使得BMDP的权威性得到
BMDP是Bio Medical Data Processing的缩写,是世界级的统计工具软件,至今已经有40多年的历史.目前在国际上与SAS.SPSS被并称为三大统计软件包.BMDP是一个大 ...
- 【数论】不定方程&逆元&中国剩余定理
一.不定方程 要求逆元,首先要知道什么是不定方程. 已知a,b,c,求解x,y,形如ax + by = c 的方程就是不定方程. 不定方程有两种解的情况: 1.无解 2.存在且有无限的解 那么,如何判 ...
- git 密钥
为什么配置SHH呢?是为了方便我们剪切代码的时间免密码输入,特别方便如何配置呢? 首先安装git: 先到官网下载:官网下载git 然后安装后在桌面任意空白处右击,选择Git Base Here即可如下 ...
- 2019-6-23-WPF-获得当前输入法语言区域
title author date CreateTime categories WPF 获得当前输入法语言区域 lindexi 2019-06-23 11:51:21 +0800 2018-10-12 ...
- AspNetPager 样式
使用方法: 1.引入样式表. 将 想要使用的样式表加入到本页面<style type="text/css"></style>标记中,或者新建一个css文件如 ...
- 交互式计算和开发环境:IPython
- Hbase数据模型概念视图
- oracle选择最有效率的表名顺序
ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,因此FROM子句中写在最后的表(基础表 driving table)将被最先处理. 在FROM子句中包含多个表的情况下,你必须选择记录条 ...