变量之间的相关关系 ThinkTemplate模板引擎的设计和使用方法(4)
{$Think.LDELIM} //模板标签起始符号
{$Think.RDELIM} //模板标签结束符号
模板注释
模板支持注释功能,该注释文字在最终页面不会显示,仅供模板制作人员参考和识别。
格式:{/* 注释内容 */ } 或 {// 注释内容 }
说明:在显示页面的时候不会显示模板注释,仅供模板制作的时候参考。
注意:“{”和注释标记之间不能有空格。
包含模板
当页面需要包含公共文件的时候,可以通过下面的模板标签,
格式:{include:Filename }
说明:Filename表示公共文件的名称(不包含后缀,因为模板文件后缀为可配置),Filename
默认在当前目录下寻找,但是完全支持相对路径访问。
例如,下面的格式都是正确的。变量之间的相关关系{include:header } 和 {include:../public/header }。加载公共模板文件后,模板引擎会重新对该页面中的模板标签进行解析,有意思的是你还可以在公共模板中再次包含公共文件,但是一定要注意不能循环包含。
在访问index操作方法的时候,模板首先读取index文件,并开始解析include:header,在解析header文件的过程中又遇到include:menu标签,又开始解析,解析完成后再解析include:footer标签,在经过几层的嵌套包含解析后index文件最终被解析成一个缓存模板文件。而且,包含文件可以设置为变量,通过下面方式定义:
{include:$include } 其中$include为一个模板变量。
XML标签
基本上,XML标签技术包含了普通模板有的功能,并且有了一些方面的增强和补充,更重要的一点是新的标签库技术更加具有扩展性。ThinkTemplate模板引擎内置了两个标签库实现:CX和Html。
要在模板页面中使用TagLib标签库功能,需要在开始时候使用taglib 标签导入需要使用的标签,防止以后标签库大量扩展后增加解析工作量,用法如下:
引入标签库后,就可以使用标签库定义的标签来定义模板了,例如:
//可以使用下面的模板标签定义。
标签库使用的时候忽略大小写,因此下面的方式一样有效:
实际上,ThinkPHP框架模板引擎会默认加载CX标签库,所以下面的方式效果相同:
并且,默认加载的CX库可以不使用CX命名空间前缀,也就是说,
等效于
对于多重循环的定义也非常方便:
{$sub.name}
混合标签结合使用例子:
{$user.name}
{$use.age}
{$user.email}
对于不太复杂的变量输出,建议多采用{$var} 方式,因为单纯从易用性方面而言,这种方式最简洁,而且功能也比较完善。
标签库标签定义
CX标签库
CX标签库主要用于输出ThinkPHP框架的变量、包含文件和实现一定控制判断。主要有:
include 包含文件支持的标签属性有 file;
comment 模板注释 无标签属性;
iterate 迭代因子输出,循环内可以结合 write 标签,支持的标签属性有 id | name | offset | length | empty;
write 复杂变量输出,包括数组、对象,有函数支持,支持的标签属性有 name | property | key | format | function;
volist 数据对象列表输出,循环内可以结合 vo 标签,支持的标签属性有 id | name | offset | length | empty;
vo 数据对象输出,支持的标签属性有 name | property | format | function;
大规模战争就打不起来