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'=>'[email protected]'); $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