ThinkPHP 6.1 模板篇之循环和选择标签
本文主要介绍在视图模板中,如何使用循环和选择标签去渲染变量及常用循环和选择标签。
目录
循环标签
foreach 标签
for 标签
volist 标签
选择标签
switch 标签
if 标签
范围标签
原生标签
总结
循环标签
foreach 标签
将查找到的数组或数据集,使用{foreach}...{/foreach}函数渲染
<table border="1">
<tr>
<th>ID</th>
<th>姓名</th>
<th>性别</th>
<th>爱好</th>
</tr>
{foreach $arr as $k => $v}
<tr>
<td>{$v.id}</td>
<td>{$v.name}</td>
<td>{$v.gender}</td>
<td>{$v.hobby}</td>
</tr>
{/foreach}
</table>
注意:循环的变量名称要与传参名称一致。
for 标签
与php原生代码使用有所不同,通过起始和终止值,结合步长实现的循环。
简单例子:1-100
{for start="1" end="100" step="1"}
{$i}
{/for}
渲染数据,默认是i,可通过name修改
{for start="0" end="count($arr)" step="1" name="i"}
<tr>
<td>{$arr[$i]['id']}</td>
<td>{$arr[$i]['name']}</td>
<td>{$arr[$i]['gender']}</td>
<td>{$arr[$i]['hobby']}</td>
</tr>
{/for}
volist 标签
volist 也是将查询得到的数据集通过循环的方式进行输出
name 属性表示数据总集,id 属性表示当前循环的数据单条集。
{volist name="arr" id="val"}
<tr>
<td>{$val.id}</td>
<td>{$val.name}</td>
<td>{$val.gender}</td>
<td>{$val.hobby}</td>
</tr>
{/volist}
使用 offset 属性和 length 属性从第2条开始显示2条,默认下标从0开始;
{volist name="arr" id="val" offset='1' length='2'}
<tr>
<td>{$val.id}</td>
<td>{$val.name}</td>
<td>{$val.gender}</td>
<td>{$val.hobby}</td>
</tr>
{/volist}
当没有任何数据的时候,使用 empty 属性实现输出指定的提示;
{volist name="arr" id="val" offset='10' length='2' empty="没有数据"}
<tr>
<td>{$val.id}</td>
<td>{$val.name}</td>
<td>{$val.gender}</td>
<td>{$val.hobby}</td>
</tr>
{/volist}
默认key从0开始计算;可使用 key='k',让索引从 1 开始计算;
{volist name="arr" id="val"}
<tr>
<td>{$key}/{$val.id}</td>
<td>{$val.name}</td>
<td>{$val.gender}</td>
<td>{$val.hobby}</td>
</tr>
{/volist}
{volist name="arr" key="k" id="val"}
<tr>
<td>{$k}/{$val.id}</td>
<td>{$val.name}</td>
<td>{$val.gender}</td>
<td>{$val.hobby}</td>
</tr>
{/volist}
选择标签
switch 标签
多条件判断可以使用switch
{switch info.gender}
{case 男}帅哥{/case}
{case 女}美女{/case}
{default/}不存在
{/switch}
判断条件不需加引号,解析时候会加上。
<?php switch($info['gender']): case "男": ?>帅哥<?php break; case "女": ?>美女<?php break; default: ?>不存在
<?php endswitch; ?>
也可以单个case判断多条件
{switch info.week}
{case 1|2|3|4|5}周一到周五:工作日{/case}
{case 0|6}周末:休息日{/case}
{default/}不存在
{/switch}
if 标签
简单判断
{if $info.age > 17}大于 17{/if}
{if $info.age >= 18}大于等于 18{/if}
and/or
{if ($info.age > 18) or ($info.age > 16)}
大于18 或 大于16
{/if}
{if ($info.age > 18) and ($info.age = 19)}
大于18等于19
{/if}
并支持使用elseif/else,进行多条件判断
{if $info.age > 18}
大于18
{elseif $info.age < 18}
小于18
{else}
等于18
{/if}
范围标签
in判断值是否存在或不存在指定的数据列表中。
{in name='info.age' value='10,20,30,40,50'}存在{/in}
{in name='info.age' value='10,20,30,40,50'}
存在数据列表中
{else/}
不存在数据列表中
{/in}
between判断值是否存在或不存在数据区间中。
{between name='info.age' value='10,50'}存在{/between}
{between name='info.age' value='10,50'}
存在数据区间中
{else/}
不存在数据区间中
{/between}
between 中的 value 只能是两个值,表示一个区间,第三个值会无效;
区间不但可以表达数字,也可以是字母,比如 a-z,A-Z。
原生标签
有时,如果忘记在模版中怎么进行编码时,可以采用{php}标签进行原生编码;
{php}
for($i=0;$i<count($arr);$i++) {
echo $arr[$i]['id'];
echo $arr[$i]['name'];
echo $arr[$i]['gender'];
echo $arr[$i]['hobby'];
}
{/php}
注意:原生编码就是 PHP 编码,不能再使用模版引擎的特殊编码方式。
总结
本文中列举了常用的循环和选择标签属性及使用方式,如果实在记不住如何使用或者觉得繁琐也可以使用php原生编码实现。