ThinkPHP 模板标签

来源:互联网 发布:淘宝联盟导购推广微信 编辑:程序博客网 时间:2024/04/28 17:54

转自:http://www.5idev.com/thinkphp

目录如下:

一、ThinkPHP 模板判断输出 If ... Else 标签

二、ThinkPHP 模板判断输出比较标签

三、ThinkPHP 模板循环输出Volist 标签

四、ThinkPHP 模板循环输出Foreach 标签

五、ThinkPHP 模板循环输出Switch 标签

六、ThinkPHP 模板判断输出 Present 标签

七、ThinkPHP 模板判断输出 Defined标签

八、ThinkPHP 模板判断输出 Empty 标签

九、ThinkPHP 模板范围判断输出 In 标签与 Range 标签



一、ThinkPHP 模板判断输出 If ... Else 标签

if ... else 标签用于进行复杂的条件判断,格式如下:

<if condition="expr1">输出的内容1<elseif condition="expr2" />输出的内容2<else />输出的内容3</if>

expr1可以是单个表达式或多个表达式的组合,如:

<if condition="(expr1) OR (expr2)">

例子:

<if condition="($vo['uid'] eq 1) OR ($vo['username'] eq 'admin') ">管理员<elseif condition="$vo['uid'] gt 1" />群众<else />游客</if>

condition 条件

condition 条件支持对数组、对象的判断以及自动判断数组或对象

// 数组形式<if condition="$vo['uid'] eq 1">// 对象形式<if condition="$vo:uid eq 1">// 自动判断<if condition="$vo.uid eq 1">


condition 属性里面还支持直接使用php代码,例如:

<if condition="strtoupper($vo['username']) eq 'ADMIN' ">管理员<else />群众</if>
注意:condition 属性值中,变量是需要 $符号的,这与其他标签不同。



二、ThinkPHP 模板判断输出比较标签


例1、

<eq name="username" value="admin">管理员</eq>


例2、name 属性值是变量名,不需要 $ 符号,而当 value 属性使用变量时需要 $ 符号

<eq name="uid" value="$adminId">管理员</eq>

例3与 else 标签混

<eq name="username" value="admin">管理员<else/>群众</eq>

该语法等同于:

if($username == "admin") {    echo '管理员';} else {    echo '群众';}


三、ThinkPHP 模板循环输出Volist 标签

输出二维数组

$this->assign( "list", $list );
<volist name="list" id="vo">用 户 名:{$vo['username']}<br />电子邮件:{$vo['email']}<br />注册时间:{$vo['regdate']|date="Y-m-d H:i",###}</volist>

输出多维数组

//构建一个多维数组: $food = array();$food[0]['fruits'][0]['fruits1'] = '苹果1';$food[0]['fruits'][0]['fruits2'] = '桔子1';$food[0]['fruits'][0]['fruits3'] = '香蕉1';$food[0]['vegetables'] = '白菜1';$food[1]['fruits'][1]['fruits1'] = '苹果2';$food[1]['fruits'][1]['fruits2'] = '桔子2';$food[1]['fruits'][1]['fruits3'] = '香蕉2';$food[1]['vegetables'] = '白菜2';//使用 print_r() 函数打印出该数组如下: Array(    [0] => Array        (            [fruits] => Array                (                    [0] => Array                        (                            [fruits1] => 苹果1                            [fruits2] => 桔子1                            [fruits3] => 香蕉1                        )                )            [vegetables] => 白菜1        )    [1] => Array        (            [fruits] => Array                (                    [1] => Array                        (                            [fruits1] => 苹果2                            [fruits2] => 桔子2                            [fruits3] => 香蕉2                        )                )            [vegetables] => 白菜2        ))
在对应模块操作(如Index/display)里将变量赋值给模板,并将模板输出:

$this->assign( "food", $food );$this->display();

模板 Tpl/default/Index/display.html :

<p>食物品种:</p><br /><volist name="food" id="vo">  <volist name="vo['fruits']" id="f">  <p>水果1:{$f['fruits1']}</p>  <p>水果2:{$f['fruits2']}</p>  <p>水果3:{$f['fruits3']}</p>  </volist>  <p>蔬菜:{$vo['vegetables']}</p><br /></volist>

输出结果如下:

食物品种:水果1:苹果1水果2:桔子1水果3:香蕉1蔬菜:白菜1水果1:苹果2水果2:桔子2水果3:香蕉2蔬菜:白菜2

输出部分数据

如果要输出结果集中的部分数据,需要指定 offset(数据指针) 与length(数据数据条数) 属性。

输出第 5~14 条记录:

<volist name="list" id="vo" offset="5" length='10'>用 户 名:{$vo['username']}<br />电子邮件:{$vo['email']}<br />注册时间:{$vo['regdate']|date="Y-m-d H:i",###}<hr /></volist>
输出奇/偶数记录

volist 中的 mod 参数相当于指定一个频率,系统会将当前的实际记录对 mod 参数值求余(PHP中的%运算符)运算。而配合判断标签(如eq标签),就可以按照频率控制输出的数据或数据显示的格式。

例子1,输出偶数记录:

<volist name="list" id="vo" mod="2"><eq name="mod" value="0">用 户 名:{$vo['username']}<br />电子邮件:{$vo['email']}<br />注册时间:{$vo['regdate']|date="Y-m-d H:i",###}<hr /></eq></volist>

提示:实际使用中可以灵活设定 mod 参数的值,而不仅仅限于奇偶。

输出循环变量(从1开始)

指定 key 属性用于输出循环的变量次数:

<volist name="list" id="vo" key="k">序    号:{$k}<br />用 户 名:{$vo['username']}<br />电子邮件:{$vo['email']}<br />注册时间:{$vo['regdate']|date="Y-m-d H:i",###}<hr /></volist>

输出数组索引(数组本身的键)

直接使用 $key 变量用于输出数组索引:

<volist name="list" id="vo">数组key:{$key}<br />用 户 名:{$vo['username']}<br />电子邮件:{$vo['email']}<br />注册时间:{$vo['regdate']|date="Y-m-d H:i",###}<hr /></volist>



四、ThinkPHP 模板循环输出Foreach 标签

foreach标签没有volist标签那么多的功能,优势是可以对对象进行遍历输出,而volist标签通常是用于输出数组。

<foreach name="list" id="vo">用 户 名:{$vo.username}<br />电子邮件:{$vo.email}<br />注册时间:{$vo.regdate|date="Y-m-d H:i",###}<hr /></foreach>



五、ThinkPHP 模板循环输出Switch 标签

ThinkPHP 模板引擎支持 switch 判断,根据不同情况输出不同的值,格式如下:

<switch name="变量名" ><case value="值1">输出内容1</case><case value="值2">输出内容2</case><default  />默认情况</switch>

例1、name 属性值为变量名称,也就是没有 $ 符号,而 value 值使用变量时需要 $ 符号

<switch name="uid"><case value="$adminId">管理员</case><default />群众</switch>

例2、多条件判断

case 的 value 属性可以支持多个条件的同时判断,使用 | 符号进行分割:

<switch name="_GET.type"><case value="gif|png|jpeg">图像格式文件</case><default />其他格式文件</switch>

六、ThinkPHP 模板判断输出 Present 标签

present标签

present 标签用来判断模板变量是否已经赋值,相当于 PHP 中的 isset() 函数行为,格式如下:

<present name="变量名">要输出的内容</present>

例子:

<present name="username">{$username} 你好!</present>

该例子等同于:

if(isset($username)){    echo "$username 你好!";}
notpresent标签
对应的还有个 notpresent 标签,为 present 标签的反义(即 !isset() )

<notpresent name="username">username 变量还没有赋值</notpresent>

两个标签合并起来等同于:

<present name="username">username 变量已经赋值<else />username 变量还没有赋值</present>



七、ThinkPHP 模板判断输出 Defined标签

defined标签

defined 标签用来判断常量是否已经被定义,相当于 PHP 中的 defined() 函数行为。defined 标签格式如下:

<present name="常量">要输出的内容</present>
例子:
define("SITE_NAME", "我爱开发网");$this->display();

<defined name="SITE_NAME">网站名称:{*SITE_NAME}</defined>
运行该例子输出:网站名称:我爱开发网

该例子等同于:

<?phpif(defined("SITE_NAME")){    echo '网站名称:',constant("SITE_NAME");}?>

notdefined标签

 notdefined 标签,为 defined 标签的反义

<notdefined name="SITE_NAME">SITE_NAME 常量没有定义</notdefined>

两个标签合并起来等同于:

<defined name="SITE_NAME">SITE_NAME 常量已经定义<else />SITE_NAME 常量没有定义</defined>


八、ThinkPHP 模板判断输出 Empty 标签

empty标签
empty 标签用来判断模板变量是否为空值,相当于 PHP 中的 empty() 函数行为。empty 标签格式如下:
<empty name="变量名">要输出的内容</empty>

例子:
<empty name="username">username 为空值</empty>

该例子等同于:

<?phpif(empty($username)){    echo 'username 为空值';}?>

notempty标签

 notempty 标签,为 empty 标签的反义
<notempty name="username">username 不为空</notempty>

两个标签合并起来等同于:

<empty name="username">username 为空值<else />username 不为空</empty>
提示:根据 empty() 函数我们知道,如下这些情况得到的结果都是 TRUE 的(使用 empty 标签会有输出):
//假设要检测的变量为 $x$x = "";$x = null;var $x;$x = array();$x = false;$x = 0;$x = "0";


九、ThinkPHP 模板范围判断输出 In 标签与 Range 标签

in标签

in 标签用于某个模板变量是否在某个范围之内,格式如下:

<in name="变量名" value="值1,值2,...">要输出的内容</in>
例子:

$groupId = 1;$this->assign( "groupId", $groupId );


<in name="groupId" value="1,2,3">管理群组</in>

运行该例子,输出: 管理群组

该例子等同于:

<?phpif(in_array(($groupId), explode(',',"1,2,3"))){    echo '管理群组';}?>
变量的值也可以是字符串或者数组,value 属性的值可以使用变量。

notin标签

对应的还有个 notin 标签,为 in 标签的反义,即判断不在某个范围内:

<notin name="groupId" value="1,2,3">非管理群组</notin>

两个标签合并起来等同于:

<in name="groupId" value="1,2,3">管理群组<else />非管理群组</in>

range标签

in 和 notin 标签也可以使用 range 标签来替代:

<range name="groupId" value="1,2,3" type="in" >管理群组</range>
上面的例子相当于 in 标签,当 type 属性的值为 notin 时就相当于 notin 标签。

1 0
原创粉丝点击