模板指南续

来源:互联网 发布:c语言中二维数组 编辑:程序博客网 时间:2024/06/07 17:24

模板指南续:
·快捷输出,常用的变量输出快捷标签,有:
{@var}对应Session变量,和{Think.Session.var}。同理{#var}对应Cookie变量。{&var}配置参数变量。{%var}语言参数变量。{.var}GET变量。{^vat}post变量。二维的就是{@var1.var2}。

·默认值输出,如果我们的模板变量没有赋值,我们可以对模版变量进行默认值的操作,那就是default语法,格式:{$变量|default=“默认值”}。对系统变量一样可以进行,比如说POST变量。

·一个模板中包含另一个模板。通常是有“公用的地方”用起来方便些。
用Include标签来包含外部的模板文件,有一下几种方法:
1.使用完整的文件名进行包含,格式<include file = "完整模板文件名">。完整的模板文件名是指服务器端的路径,如果是相对路径就是相对于入口文件。
2.包含当前模块的其他操作模板文件。比如说Index操作模块中有个操作方式为read操作,read操作对应了一个操作模板,我可以通过操作方式来包含它对应的操作模板。格式<include file = "操作名">。
3.包含其他模块的操作模板,格式:<include file = "其他模块名:操作方式"。
4.包含其他模板主题的模块操作模板,格式<include file = "主题名@模块名:操作名"
5.用变量控制要导入的模板,格式<include file  = "变量">
include中的属性的值的使用方式就是[属性名]。

·导入文件,传统的导入js和css文件的方式是:
<script type = 'text/javascript' src = '/public/Js/Array.js'/>
<link rel = "stylesheet" type="text/css" href="/App/Tpl/defaul/public/css/style.css"/>
系统提供了专门的标签用来简化,
import标签,
<import type = 'js' file = "Js.Util.Array"/>由于默认属性为js,所以可以这样<import file ="Js.Util.Array"/>。导入多个文件,<import file = "Js.Util.Array,Js Util.Date"/>
导入外部Css文件必须指定type的值,如<import type = "css" file = "Css.common"/>。为啥上面script的src的值有public而下面没有呢,这是因为import的默认方式的起始路径就是网站的Public目录,如果指定其他的目录,可以使用basepath属性,如:<import file = "Js.Util.Array" basepath = "./Common"/>
load标签,通过文件方式导入当前项目的公共JS或者CSS。如:<load href = "../Public/Js/Common.js"/> <load href = "../Public/Css/Common.css"/>。还可以在href属性中使用特殊模板标签进行替换,<load href = "__PUBLIC__/Css/Common.css"/>
系统还提供了两个很标签,js和css。用法一样。<js href = "__PUBLIC__/Js/Common.js"/>...
另外还提供了普通标签的方式加载外部的js和css文件。如,
{load: __PUBLIC__/Js/Common.js}

·Volist标签,用于循环的。循环数据集或者多维数组,我们在Action类中向模板变量进行赋值后我们就可以用volist标签进行循环了。我们这里就先说明几种特殊的循环,
1.部分数据循环
<volist name ="list" id = "data" offest = "5" length = "10"/>
{$data.id}{$data.name}
</volist>
2.输出偶数记录,这里的偶数记录的意思是mod的偶数倍,从value的位置开始循环,等于mod*(1,2,3..)倍就可以输出。
<volist name = "list" id = "vo" mod = "2">
<eq name = "mod" value ="1"><$vo.name></eq>
<volist>
3.输出循环变量
<volist name = "list" id = "vo" key = "k">
{$k}.{$vo.name}
</volist>
4.为空的时候输出什么,就是empty = "随意"

如果要使用数组的索引,直接
<volist name = "list" id = "vo">
{$key}.{$vo.name}
</volist>
他有个别名,用法一样,iterate。

·foreach标签,也是循环输出的,
<foreach name = "list" item = "vo">
{$vo.name}
</foreach>
相对于volist来说,它的好处就是简洁加上可以对对象进行遍历输出。

·switch标签。格式:
<switch name = "变量">
<case value = "value1">输出内容1</case>
<case value = "value2">输出内容2</case>
<default />默认情况
</switch>
name属性可以使用函数一击系统变量。别把$带上了。value的值如果说为多个对一个,就用|分割,如<case value = "gif|png|jpg">图像格式</case>
value的值也可为变量。

·比较标签,前面我们也看过比较标签,eq或equal,等于。
用法就是:<比较标签 name="" value = "">内容</比较标签>
有以下集中比较标签:
eq或equal:等于
neq或notequal:不等于
gt:大于   greater than
egt:大于等于
lt:小于       less than
elt:小于等于
heq:恒等于
nheq:不恒等于
还可以和<else/>混合使用,如:
<eq name = "number" value = "5">等于<else/>不等于

·判断一个变量是否在某一个范围内,3标签,in,notin,range,格式:
<in name = "id" value = "1,2,3...">输出内容</in>
还可以借助<else/>
<in name = "id" value = "1,2,3..">输出内容<else/>输出内容</in>
notin与这相同。range的用法是
<range name = "id" value = "1,2,3" type = "in">输出内容</range>
value可以为字符串或数组。

·判断模板变量是否已经赋值了,用present标签。如:
<present name = "name">输出内容</present>
相反的就是notpresent。合并就是再次利用<else/>标签

·empty标签判断模板变量是否为空。用法与上面present标签相同。

·defined标签判断常量是否已经有定义了,同上

·if标签,定义比较复杂的条件判断,格式
<if condition  = "($bane eq 1)OR($name gt 100)">value1
<elseif condition = "$name eq 2" />value2
<else />value3
</if>
只能用eq等等不能用><=.

·标签嵌套,可以嵌套的系统内置标签包括,volist,iterate,switch,if,elseif,else,foreach,compare,present,empty,defined.所有的比较标签都行。最多3层。

·使用php标签也行。第一种直接<php></php>,第二种原生态的,<?php    ?>。很显然,用了这之后上面的就不能用了。不过对php熟悉的用这会好些。

·原样输出,可以使用literal标签来防止模板标签被解释。

·模板注释:{//}{/*  */}

·引入标签库,标签库可无限扩展和增加的,格式<tagLib name = "标签库1,[,标签库2,....]">。如何防止有的标签在几个标签库中都有而导致解析错误呢,如<html:link href= ''>,也可同过配置文件进行加载Html标签库。'TAGLE_PRE_LOAD'=>'html'。cx标签库是系统内置标签库。

·修改定界符,对于{}模板输出的我们已经知道该怎么修改了,
在项目配置文件中增加下面的配置:'TMPL_L_DELIM'=>'<{',
'TMPL_R_DELIM'=>'}>'。而对于<>这种标签,修改是这样的
配置参数:TAGLIB_BEGIN    //标签库标签开始标签
TAGLIB_END    //标签库标签结束标记

原创粉丝点击