经典嗨曲:ThinkPHP XML模版标签和标签库

来源:百度文库 编辑:偶看新闻 时间:2024/04/20 12:02:53
ThinkPHP 包含了一个基于XML和TagLib技术的模板标签。基本上,新的标签技术包含了普通模板有的功能,并且有了一些方面的增强和补充,更重要的一点是新的标签库模板技术更加具有扩展性。
新的TagLib标签库具有命名空间功能,ThinkPHP框架内置了两个小型的标签库实现:CX和 Html
要在模板页面中使用TagLib标签库功能,需要在开始时候使用taglib 标签导入需要使用的标签,防止以后标签库大量扩展后增加解析工作量,用法如下:

  • <tagLib name='cx,html' />


引入标签库后,就可以使用标签库定义的标签来定义模板了,例如:
//可以使用下面的模板标签定义。

  • <cx:vo name='user' property='name' />
  • <cx:volist id='user' name='userList' >
  • <cx:vo name='user' property='name' />
  • cx:volist>
  • <html:select options='name' selected='value' />



标签库使用的时候忽略大小写,因此下面的方式一样有效:

  • <CX:VO NAME='user' property='name' />


实际上,ThinkPHP框架模板引擎会默认加载CX标签库,所以下面的方式效果相同:

  • <tagLib name='html' />



并且,默认加载的CX库可以不使用CX命名空间前缀,也就是说

  • <vo name='user' property='name' />

  • //等效于



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
  • var 变量输出用于普通变量
  • 支持的标签属性有 name | format | function

  • equal 判断是否相同
  • notequal 判断是否不同
  • 支持的标签属性有 name | property | key | value | function

  • present 判断是否定义
  • notpresent 判断是否没有定义
  • 支持的标签属性有 name | property | key




Html标签库
Html标签库主要用于实现一些Html标记的动态生成和变量封装,主要有:

  • select 动态生成select列表
  • checkbox 动态生成checkbox
  • radio 动态生成radio
  • link 动态加载js或者css文件
  • imageLink 带有链接的图片
  • imageBtn 图片按钮
  • mulitSelect 多选组件

  • list DataGrid组件


要使用Html标签库,需要添加html命名前缀,如
  • <html:link href='/path/to/common.js' />

  • //这是一个复杂的DataGrid组件的标签定义

  • <html:list id='checkList' style='list' name='action' checkbox='true' action='true'datasource='list' show='id:编号|8%,name:名称,title:显示名,status|getStatus:状态|8%'actionlist='edit:编辑,del:删除,forbid|resume:禁用|恢复' />



模板标签的混合使用
现在我们已经知道了ThinkPHP模板引擎的两种标签定义方式,其实,搭配使用两种定义方式能够带来更大的效率。
举个VOLIST标签的例子,我们可以用下面的方式输出一个VoList对象 userList:

  • <volist id='user' name='userList' >
  • <vo name='user' property='name' />
  • <vo name='user' property='age' />
  • <vo name='user' property='email' />
  • volist>

但是,用

  • <volist id='user' name='userList' >
  • {$user.name }
  • {$user.age }
  • {$user.email }
  • volist>



的方式似乎更加简单。
对于不太复杂的变量输出,建议多采用{$var} 方式,因为单纯从易用性方面而言,这种方式最简洁,而且功能也比较完善。

系统默认加载的标签库只是一个很小型的实现,你完全可以自定义标签库。至于如何自定义标签库放到高级篇里面叙述,相信能够使用好系统标签库已经足以应付大部分模板功能。