循环输出
VOLIST
volist标签通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。
<volist name="list" id="vo">
{$vo.id}:{$vo.name}<br/>
</volist>
说明:Volist标签的name属性表示模板赋值的变量名称,因此不可随意在模板文件中改变。id表示当前的循环变量,可以随意指定,但确保不要和name属性冲突。
补充用法:
1)<volist name="list" id="vo" offset="5" length='10'>
输出第五到十五条记录
2)<volist name="list" id="vo" mod="2" >
输出偶数记录
3)<volist name="list" id="vo" empty="暂时没有数据" >
为空的时候输出
注:empty属性不支持直接传入html语法,但可以支持变量输出
FOREACH
<foreach name="list" item="vo">
{$vo.id}:{$vo.name}
</foreach>
name表示数据源 item表示循环变量。
条件输出
SWITCH
用法:
<switch name="变量" >
<case value="值1" break="0或1">输出内容1</case>
<case value="值2">输出内容2</case>
<default />默认情况
</switch>
注:对于case的value属性可以支持多个条件的判断,使用”|”进行分割
比较标签
用法:
<比较标签 name="变量" value="值">
内容
</比较标签>
范围判断标签
IN和NOTIN
使用in标签来判断模板变量是否在某个范围内
BETWEEN 和 NOTBETWEEN
用between标签来判断变量是否在某个区间范围内,当使用between标签的时候,value只需要一个区间范围,也就是只支持两个值,后面的值无效。
赋值判断标签
present标签用于判断某个变量是否已经定义
empty标签用于判断某个变量是否为空
公共模板和模板布局
公共模板
在当前模版文件中包含其他公用的模版文件使用include标签,标签用法:
<include file='模版表达式或者模版文件1,模版表达式或者模版文件2,...' />
使用模版表达式
模版表达式的定义规则为:模块@主题/控制器/操作
<include file="Public/header" /> // 包含头部模版header
<include file="Public/menu" /> // 包含菜单模版menu
<include file="Blue/Public/menu" /> // 包含blue主题下面的menu模版
或者包含多个模板
<include file="Public/header,Public/menu" />
注意,包含模版文件并不会自动调用控制器的方法,也就是说包含的其他模版文件中的变量赋值需要在当前操作中完成。
使用模版文件
可以直接包含一个模版文件名(包含完整路径),例如:
<include file="./Application/Home/View/default/Public/header.html" />
传入参数
Include标签支持在包含文件的同时传入参数
模板布局
第一种方式:全局配置方式
第二种方式:模板标签方式
第三种方式:使用layout控制模板布局
Action参数绑定
按变量名绑定
例如,我们给Blog控制器定义了两个操作方法read和archive方法,由于read操作需要指定一个id参数,archive方法需要指定年份(year)和月份(month)两个参数,
URL的访问地址分别是:
http://serverName/index.php/Home/Blog/read/id/5
http://serverName/index.php/Home/Blog/archive/year/2013/month/11
按变量顺序绑定
操作方法的定义不需要改变,URL的访问地址分别改成:
http://serverName/index.php/Home/Blog/read/5
http://serverName/index.php/Home/Blog/archive/2013/11
空操作和空控制器
空操作
空操作是指系统在找不到请求的操作方法的时候,会定位到当前控制器的空操作(_empty)方法来执行。
注意:空操作方法仅在你的控制器类继承系统的Think\Controller类才有效。
空控制器
空控制器的概念是指当系统找不到请求的控制器名称的时候,系统会尝试定位空控制器(EmptyController)。