thinkphp的其他方式的模版输出
<?php
/*
+-----------------------------------------------------------------------------------------------------------+
thinkphp的使用之模版输出:
volist标签:
在模块操作中,select()方法返回的是一个二维数组,可以用volist直接输出:
<volist name="list" id="vo">
用户名:{$vo['username']}<br/>
电子邮件:{$vo['email']}<br/>
注册时间:{$vo['regdate']|date="Y-m-d H:i",###}
</volist>
注意:name的属性值list(name="list")不可随意改变,需要与操作中的模版赋值指令对应.
$this->assign("list",$list);
id表示可以循环变量,可以随意指定,但不能与name属性冲突.
输出部分数据
如果要输出结果中的部分数据,需要指定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标签),捷可以按照频率控制输出的数据或数据显示的格式.
例如:输出偶数记录:
<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>
输出所有的记录,但让表格隔行显示不同的背景颜色的例子:
<table>
<volist name="list" id="vo" mod="2">
<tr<eq name="mod" value="0">style="background-color:#FFF;"</eq>>
<td>我是单元格</td>
<td>我也是单元格</td>
</volist>
</table>
实际中可以灵活设定mod参数的值,而不仅仅限于奇偶.
输出循环变量
指定key属性用于输出循环的变量次数(注意不是数据表主键id)
<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模版变量输出
{$变量}
{$username} //普通变量
{$userinfo['email']} //数组方式
{$userinfo['sub']['name']} //三维数组
{$userinfo:email} //对象形式
{$userinfo.email} //自动判断数组或对象方式
默认输出:
如果输出模版变量没有任何值,但是我们需要在显示的时候赋予一个默认值的话,可以使用default语法来默认显示一个值
{$变量|default="默认值"}
例子;
{$username|default="匿名"}
使用函数
对模版变量使用函数
模版引擎支持对输出的变量做格式化处理,也是使用函数,并且支持多个函数.
格式:
{$变量|函数1|....|函数n=参数1,...,参数n,###}
函数从左往右对变量执行,先执行函数1,得到结果后执行函数2,依次类推,并且默认情况下执行的结果作为下一个函数第一个参数
例子:
{$webTitle|md5|strtoupper|substr=0,3}
实际执行结果等效为:
<?php
echo substr(strtoupper(md5($webTitle)),0,3);
?>
如果变量或上函数执行的结果不是函数或下一个函数的第一个参数,那么需要使用定位符"###":
{$userinfo['regdate']|date="Y-m-d H:i",###}
实际等效的结果为:
<?php
echo date("Y-m-d H:i",$userinfo['regdate']|);
?>
提示:
对变量使用函数没有数量限制,但默认禁用了exit和echo函数,以防止模版破坏模版输出.
模版中直接使用函数:
1.执行函数并输出返回值
{:$函数}
例子:{:say_hello('ThinkPHP')} //say_hello()为用户自定义函数
实际执行的结果等效为:
<?php
echo say_hello("ThinkPHP");
?>
2.执行函数但不输出
格式:
{~函数}
例子:
{~say_hello("ThinkPHP")} //say_hello()为用户自定义函数
实际等效为
<?php
say_hello('ThinkPHP');
?>
以上方法也支持传入模版变量作为函数的参数.
系统变量的输出:
系统变量宝包含:server,session,post,get,request,cookie,env.系统变量的输出不需要事先要赋值给某个模版变量.系统变量的输出以$Think.开头,并且仍然支持使用函数.
例子:
{$Think.session.session_id|md5} //输出$_SESSION变量并使用md5加密
//或者简写为
{$_SESSION.session_id|md5}
//输出$_GET变量
{$_GET.pageNumber}
系统常量输出:
使用$Think.const输出系统常量;
例子:
{$Think.const.ACTION_NAME} //输出Thinkphp系统定义的常量ACTION_NAME
//或者简写为
{$Think.ACTION_NAME}
配置参数输出
使用$Think.config输出项目的配置参数值
例子:
{$Think.config.DB_PREFIX}
输出的值和C('DB_PREFIX')的返回结果是一样的.
快捷输出:
包括:
{@var}与{$Think.session.var}等效,输出Session变量
{#var}与{$Think.cookie.var}等效,输出Cookie变量
{&var}与{$Think.config.var}等效,输出配置参数
{%var}与{$Think.lang.var}等效,输出语言变量
{.var}与{$Think.get.var}等效,输出GET变量
{^var}与{$Think.post.var}等效,输出POST变量
{*var}与{$Think.const.var}等效,输出常量
+-----------------------------------------------------------------------------------------------------------+
?>