ThinkPHP内置的模板引擎是一个自主创新的XML编译性模板引擎,下面通过一个案例分享一些ThinkPHP内置的模板引擎常用的模板标签的用法,包括变量输出、循环、判断、比较等,这些都是比较基础的用法,无法包括ThinkPHP内置模板引擎的全部标签和特性。
(1)下面是控制器 IndexAction 类的源码
<?php class IndexAction extends Action{ public function index() { $_SESSION['name'] = 'ThnkPHP Session'; $vo = array('id'=>1,'name'=>'ThinkPHP','email'=>'liu21st@gmail.com'); $this->assign('vo',$vo); $obj = (object)$vo; $this->assign('obj',$obj); $this->assign('array',array(5,260,13,7,40,50,2,1)); $this->assign('num1',6); $this->assign('num2',2); $this->assign('num',6); $this->display(); } } ?>
(2)以下演示的是上面控制器赋值到模板中的一些变量,常量以及数组的一些基础性用法
普遍变量输出
num1:{$num1}
对象输出
id:{$obj:id}
name:{$obj:name}
数组输出
id:{$vo['id']}
name:{$vo['name']}
自动判断数组和对象输出
id:{$vo.id}
name:{$vo.name}
系统常量输出(系统常量可以不用在控制器中使用 assign 赋值)
{$Think.now|date='Y-m-d H:i:s',###}
{$Think.server.PHP_SELF}
{$Think.session.name}
对变量使用函数(这里可以是内置函数或者自定义函数)
{$vo.name|strtolower|ucwords}
Foreach 输出
<foreach name="vo" key="key" item="item">
{$key}:{$item}
</foreach>
下面这个例子使用了循环标签、Switch标签、比较标签
<volist name="array" id="val" key="i">
[{$i}]
<eq name="odd" value="1">偶数行</eq>
<eq name="odd" value="0">奇数行</eq>
<gt name="val" value="5">{$val}大于5</gt>
<if condition=" $val gt 15">
{$val}大于15
<elseif condition="$val lt 10" />
{$val}小于10
</if>
<switch name="val">
<case value="1">数据{$val}</case>
<case value="2">数据{$val}</case>
<case value="3">数据{$val}</case>
<default />其他数据是 {$val}
</switch>
</volist>
输出结果类似为:
[1] 奇数行 5小于10 长度为1
[2] 偶数行 260大于5 260大于15 长度为3
[3] 奇数行 13大于5 长度为2
[4] 偶数行 7大于5 7小于10 长度为1
[5] 奇数行 40大于5 40大于15 长度为2
[6] 偶数行 50大于5 50大于15 长度为2
[7] 奇数行 2小于10 长度为1
[8] 偶数行 1小于10 长度为1
ThinkPHP内置的模板引擎比较标签
<gt name="num1" value="3">大于3</gt>
<lt name="num2" value="3">小于3</lt>
输出结果类似为:
大于3
小于3
条件判断
<if condition=" $num gt 5">
{$num}大于5
<elseif condition="$num gt 3" />
{$num}大于3<else />
其他{$num}
</if>
输出结果类似为:
6大于5