Thinkphp中的内置标签有:Volist,Foreach,For,Switch,比较标签,范围判断标签,IF,Present,Empty,Defined,Assign,Define,标签嵌套,import标签
1.Volist标签
volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。在控制器中首先对模板赋值:
$User=M("User"); $list=$User->limit(10)->select(); $this->assign("list",$list);
在模板定义如下,循环输出用户的编号和姓名:(也可以输出部门数据,例如输出其中的5~15条记录)
<volist name="list" id="vo" offset="5" length="10" empty="无数据"> {$vo.id}:{$vo.name} <volist>
2.Foreach标签
foreach标签类似与volist标签,只是更加简单,没有太多额外的属性,例如:{$vo.id}:{$vo.name}
name标识数据源item表示循环变量。
可以输出索引,如下:
<foreach name="list" item="vo"> {$key}|{$vo} </foreach>
也可以定义索引的变量名
<foreach name="list" item="vo" key="k"> {$k}|{$vo} </foreach>
3.For标签
用法:
<for start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名"></for>
开始值、结束值、步进值和循环变量都可以支持变量,开始值和结束值是必须,其它可选。comparison的默认值是lt;name的默认值是i,步进值的默认值是1,举例如下:
<for start="1" end="100">{$i}</for>
解析后的代码是
for($i=1;$i<100;$i+=1){ echo $i; }
4.Switch标签
用法:
<switch name="变量"> <case value="值1" break="0或1">输入内容1</case> <case value="值2">输出内容2</case> <default/>默认情况 </switch>
使用方法如下:
<switch name="User.level"> <case value="1">value1</case> <case value="2">value2</case> <default/>default </switch>
其中name属性可以使用函数以及系统变量,例如:
<switch name="Think.get.userId|abs"> <case value="1">admin</case> <default/>default </switch>
对于case的value属性可以支持多个条件的判断,使用“|”进行分割,例如:
<switch name="Think.get.type"> <case value="gif|png|jpg">图像格式</case> <default/>其它格式 </switch>
Case标签还有一个break属性,表示是否需要break,默认是会自动添加break,如果不要break,可以使用:
<switch name="Think.get.userId|abs"> <case value="1" break="0" >admin</case> <case value="2">admin</case> <default/>default </switch>
也可以对case的value属性使用变量,例如:
<switch name="User.userId"> <case value="$adminId">admin</case> <case value="$memberId">member</case> <default/>default </switch>
5.比较标签
比较表浅用于简单的变量比较,复杂的判断条件可以用if标签替换,比较标签是一组标签的集合,基本上用法都一致,如下:
<比较标签 name="变量" value="值">
内容
</比较标签>
系统支持的比较标签以及所表示的含义分别是:
- eq或equal:等于
- neq或notequal:不等于
- gt:大于
- egt:大于等于
- lt:小于
- elt:小于等于
- heq:恒等于
- nheq:不恒等于
他们的用法基本一致,区别在于判断的条件不同,并且所有的比较标签都可以和else标签一起使用。
<eq name="name" value="value">
相等
<else/>
不相等
</eq>
当name变量的值大于5就输出
<gt name="name" value="5">value</gt>
当name变量的值不小于5就输出
<egt name="name" value="5">value</egt>
6.范围判断标签
范围判断标签包括 in notin between notbetween 四个标签,都用于判断变量是否在否个范围。