觉得NEATTemplate 模板引擎的标签使用不太方便,说明下我的FCS框架中内置模板引擎中标签的用法。 内置模板引擎对模板变量的支持相当充分,除了可以输出正常变量外,还可以输出特殊变量和对输出变量使用函数定义(并支持多个函数)。 模板变量的标签格式为 格式:{$varname|function1|function2=arg1,arg2,### } 说明: { 和 $ 符号之间不能有空格 ,后面参数的空格就没有问题 ###表示模板变量本身的参数位置 支持多个函数,函数之间支持空格 支持函数屏蔽功能,在配置文件中可以配置禁止使用的函数列表 支持自定义函数,以后打算封装一些常用格式函数 支持变量缓存功能,重复变量字串不多次解析 使用例子: {$webTitle|md5| strtoupper | substr=0,3 } {$number|number_format=2 } 如果在应用Action中需要输出某个变量,使用下面的方法: $tpl = new Template(); $tpl->assign('name','value'); 系统只会输出设定的变量,其它变量不会输出,一定程度上保证了变量的安全性。 除了常规变量的输出外,模板引擎还支持系统变量和系统常量、以及系统特殊变量的输出。它们的输出不需要作变量设定。 支持系统变量(依然支持函数使用和大小写、空格),以FCS.打头,如 {$FCS.server.script_name } //取得$_SERVER变量 {$FCS.session.session_id|md5 } //版本$_SESSION变量 {$FCS.get.pageNumber } //版本$_GET变量 {$FCS.cookie.name } //版本$_COOKIE变量 系统常量 {$FCS.const.__FILE__ } {$FCS.const.MODULE_NAME } 特殊变量 ,由FCS系统定义的常量 {$FCS.version } //版本 {$FCS.now } //现在时间 {$FCS.template|basename } //模板页面 {$FCS.LDELIM } //模板标签起始符号 {$FCS.RDELIM } //模板标签结束符号 模板注释 模板支持注释功能,该注释文字在最终页面不会显示,仅供模板制作人员参考和识别。 格式:{/* 注释内容 */ } 或 {// 注释内容 } 说明:在显示页面的时候不会显示模板注释,仅供模板制作的时候参考。 注意{和注释标记之间不能有空格。 公共模板 当页面需要包含公共文件的时候,可以通过下面的模板标签 格式:{ include:Filename } 说明:Filename表示公共文件的名称(不包含后缀,因为模板文件后缀为可配置),Filename默认在当前目录下寻找,但是完全支持相对路径访问,例如,下面的格式都是正确的。{ include:header } 和 { include:../public/header }。该标签可以出现在模板页面的任何位置,也就是说可以包含除了头部文件和尾部文件之外的一些公共文件,就看网站页面的设计了。建议的方式是首先让美工写在一个页面文件中,然后调试完毕后在分成多个文件来引用,因为一旦使用引用标签后,模板页面就不能直接浏览到实际的效果了。加载公共模板文件后,模板引擎会重新对该页面中的模板标签进行解析,有意思的是你还可以在公共模板中再次包含公共文件,但是一定要注意不能循环包含。例如, 在header.html文件中包含了menu文件 {include:menu} 在index.html文件中则包含了header和footer {include:header} 这里是首页的内容 {include:footer} 在访问index操作方法的时候,模板首先读取index文件,并开始解析include:header,在解析header文件的过程中又遇到include:menu标签,又开始解析,解析完成后再解析include:footer标签,在经过几层的嵌套包含解析后index文件最终被解析成一个缓存模板文件。 对象标签 注意到模板变量的输出并没有定义对象的属性输出,由于性能的关系,FCS系统没有对对象的属性输出提供支持,但是有一种对象除外,就是数据模型Vo对象,考虑到在进行数据操作的时候,经常需要输出某个数据表的一些属性,以供查看和修改,虽然,利用原来的模板变量输出也可以进行对象的输出,但是过程会相对麻烦些,因为要把各个数据表的字段逐个赋值给输出变量,势必存在对Vo对象的遍历过程,甚至如果有多个Vo对象要输出那就更加麻烦了。 因此,FCS系统特别针对Vo对象做了输出处理,使得在模板中输出Vo对象显得轻而易举。 格式:{Vo: VoName| key } 说明:在页面中输出名称为VoName的Vo对象的属性key的值 如果在应用Action中需要输出某个Vo对象,使用下面的方法: $tpl = new Template(); $UserVo = new UserVo($Map); $tpl->assignVo('user',UserVo ); 列表标签 如果要输出一个数据集呢,如果使用对象标签岂不是累的要死,呵呵~所以,系统专门为数据集的列表输出定义了列表标签。其实,数据集就是包含多个Vo对象的VoList对象, 格式:{VoList: VoListName| Content } 说明:在页面中输出名称为VoName的VoList对象 其中Content中可以直接输出Vo的属性名称,方法是使用Vo属性名称作为变量,VoList中的变量不用再添加标签开始和结束标记 如下面的例子: {voList : user | <H4><A HREF="?a=edit&id=$id">$username</A> <A HREF="?a=edit&id=$id">编辑</A> <A HREF="?a=delete&id=$id">删除</A></H4> }; 如果在应用Action中需要输出某个VoList对象,使用下面的方法: $tpl = new Template(); $dao = new UserDao(); $userList = $dao->findAll(); $tpl->assignVoLIst('user',$userList);