1. 论坛系统升级为Xenforo,欢迎大家测试!
    排除公告

FCS框架模板引擎的标签使用方法

本帖由 流年2006-03-15 发布。版面名称:图形设计

  1. 流年

    流年 New Member

    注册:
    2006-03-15
    帖子:
    3
    赞:
    0
    觉得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);