首页 > 编程 > PHP > 正文

PHP中TAL模板引擎语法的解析(代码)

2020-03-22 19:36:21
字体:
来源:转载
供稿:网友
这篇文章给大家介绍的内容是关于php TAL模板引擎语法,内容很详细,有需要的朋友可以参考一下,希望可以帮助到大家。

PHP 数据

本文档的使用到的数据($talData)

//定义talData变量$talData = array();$talData[ title ] = title1 $talData[ key ] = key1 $talData[ href ] = xxx.html $talData[ html ] = h1 h1标题 /h1 $talData[ fun ] = function($key= ){ return $key === key1 ? true : false;//两维数组$talData[ list1 ] = array( array( id = 1 , title = 标题1 ), array( id = 2 , title = 标题2 ), array( id = 3 , title = 标题3 ), array( id = 4 , title = 标题4 ));
//输出的数据结构{ title : title1 , key : key1 , href : xxx.html , html : h1/u6807/u9898 //h1 , fun :{}, list1 :[{ id : 1 , title : /u6807/u98981 },{ id : 2 , title : /u6807/u98982 },{ id : 3 , title : /u6807/u98983 },{ id : 4 , title : /u6807/u98984 }]}
属性优先权

define 定义变量

condition

repeat

content or replacae

attributes 属性

omit-tag

TAL有效空间定义变量定义全局(global)变量title和局部变量 key
 p tal:define= global title talData/title; key talData/key  ${title} ${key}${title} ${key} !-- 结果 --  p title1 key1 /p title1 
定义默认值变量
 p tal:define= global fname string:fname1 string; lname string:lname1 string;  ${fname} ${lname}${fname} ${lname} !-- 结果 --  p fname1 string lname1 string /p fname1 string 
TAL有效空间定义变量定义拼接变量
 p tal:define= global hello string:hello $fname welcome on this page  ${hello} p tal:define= global hello string:hello ${fname} welcome on this page  ${hello} !-- 结果 --  p hello fname1 string welcome on this page /p 
定义变量,执行php方法
 p tal:define= global rand php: rand(1, 4)  ${rand} !-- 结果 --  p 2 /p 
TAL有效空间输出内容tal:replace= 数据 将用值替代整个标签,如果没有赋值将替空
 tal:block  p 渲染1 /p  /tal:block  tal:block tal:replace= 不渲染这里 /tal:block  tal:block tal:replace= talData/title  p 不渲染这里 /p  /tal:block  p ${talData/title} /p  !-- 结果 --  p 渲染1 /p title1 p title1 /p 
tal:content= 数据 将会替代标签内的内容
 p tal:content= talData/title  test data span tips /span  !-- 结果 --  p title1 /p 
TAL有效空间输出内容${数据}
 p >tal:attributes 将会改变tag的属性或值
 a href= http://www.foo.com title= some foo link tal:attributes= href talData/href; title talData/title tal:content= talData/key sample link /a  !-- 结果 --  a href= xxx.html title= title1 key1 /a 
tal:on-error= string: 出错时显示内容 ;出错时显示error内容,并且没有当前标签;
 span tal:on-error= string: 当前数据不存在 tal:content= talData/key key 已经是定义了 /span  span tal:on-error= string: 当前数据不存在 tal:content= talData/ky ky 没有定义的 /span  !-- 结果 --  span key1 /span 当前数据不存在
TAL有效空间判断条件tal:condition= 数据 ,条件是true,标签和它的内容就会被显示
 p tal:condition= php: true tal:content= talData/title 标题 /p  p tal:condition= php: talData[ key ] == key1 tal:content= talData/key 关键词 /p  p tal:condition= php: key == key1 tal:define= key talData/key tal:content= talData/key 关键词 /p  p tal:condition= talData/key tal:content= talData/key 关键词 /p  p tal:condition= talData/fun tal:content= talData/key 关键词 /p  !-- 结果 --  p title1 /p  p key1 /p  p key1 /p  p key1 /p 
TAL有效空间循环tal:repeat= 赋值变量 数据 ;属性循环它的元素和内容直到结束
 ul tal:repeat= item talData/list1  li tal:condition= php: repeat.item.index == 0  repeat/item/key: ${repeat/item/key} ;(如果talData/list1是一组联合对象,返回item的键) br/  repeat/item/index: ${repeat/item/index} ;(返回索引号(0~count-1)) br/  repeat/item/number: ${repeat/item/number} ;(返回索引号(1~count)) br/  repeat/item/even: ${repeat/item/even} ;(如果是偶数,true) br/  repeat/item/odd: ${repeat/item/odd} ;(如果是奇数,true) br/  repeat/item/start: ${repeat/item/start} ;(如果是第一个元素,true) br/  repeat/item/end: ${repeat/item/end} ;(如果是最后一个元素,true) br/  repeat/item/length: ${repeat/item/length} ;(返回talData/list1里面元素个数) br/  ------------- /li  li tal:condition= php: repeat.item.index 0 tal:content= item/title 列表li /li  /ul  !-- 结果 -- repeat/item/key: 0 ;(如果talData/list1是一组联合对象,返回item的键) br/ repeat/item/index: 0 ;(返回索引号(0~count-1)) br/ repeat/item/number: 1 ;(返回索引号(1~count)) br/ repeat/item/even: 1 ;(如果是偶数,true) br/ repeat/item/odd: 0 ;(如果是奇数,true) br/ repeat/item/start: 1 ;(如果是第一个元素,true) br/ repeat/item/end: 0 ;(如果是最后一个元素,true) br/ repeat/item/length: 4 ;(返回talData/list1里面元素个数) br/  /li  li 标题2 /li  li 标题3 /li  li 标题4 /li 
TAL有效空间标签渲染与否tal:omit-tag= condition ;要求phptal解析时忽略实体的开关闭标签,它的内容仍然会显示.
 p tal:omit-tag= php: false  omit-tag值为真,不出现当前p标签,否则就出现当前p标签 p tal:omit-tag= php: true  omit-tag值为真,不出现当前p标签,否则就出现当前p标签 !-- 结果 --  p omit-tag值为真,不出现当前p标签,否则就出现当前p标签 /p omit-tag值为真,不出现当前p标签,否则就出现当前p标签
tal:block ;代替标签,标签永远不输出
 tal:block tal:repeat= x php:range(1,10) tal:content= x 文字会出现十次 /tal:block  !-- 结果 -- 12345678910
METAL空间 支持宏metal:define-macro 定义宏
 !-- 在pWeb/_macro/common.html文件中代码 --  tal:block metal:define-macro= WinPageData  script type= text/javascript  window.WinPageData = ${structure WinPageData}; /script  /tal:block 
metal:use-macro 调用宏
 tal:block metal:use-macro= pWeb/_macro/common.html/WinPageData  当前内容会被宏替换掉 script type= text/javascript  window.WinPageData = {}; /script  /tal:block  p metal:use-macro= ${路径变量}/macros.html/main_menu /p 
METAL空间 支持宏metal:define-slot 定义宏标签替换
 !-- 在pWeb/_macro/mlog.html文件中代码 --  tal:block metal:define-macro= mobile  script  metal:block define-slot= mlog_page  var mlog_page = mobile_other  /metal:block  var mlog_track = function(){}; /script  script src= xxx.js /script  /tal:block 
metal:fill-slot 使用宏标签替换
 tal:block metal:use-macro= pWeb/_macro/mlog.html/mobile  tal:block metal:fill-slot= mlog_page  var mlog_page = mobile_index  /tal:block  /tal:block 
METAL空间 支持宏宏获取参数
 !-- 在pWeb/_macro/mlog.html文件中代码 --  tal:block metal:define-macro= conent  p ${title} /p  p ${key} /p  /tal:block 
宏传参数(tal:define)
 tal:block metal:use-macro= pWeb/_macro/mlog.html/conent tal:define= title 标题 key 关键词 /tal:block 
phptal空间

phptal:debug

phptal:cache 使整个元素(包括标签)保存在磁盘而不重新解析直到cache失效,有效期的格式由数字和 d , h , m 或 s 组成.
 p >使用php:语法如下所述同正规表达式,除了- 被替换成.及变量不需要前缀$,使用空格装配由点分隔的字符串.
php:htmlentities(foo)php: string ${varReplaced} php: string ${some.path().to[0].var} php:foo.a.b.c(e).htmlentities(SomeClass::staticMethod())php:SomeClass::ConstOfClassphp:SomeClass::$staticVar
使用not:、exists:语法not:可以用于tal:condition中,相反判断
 span tal:condition= not: logged not logged /span  !-- 结果 --  span not logged /span 
exists:可以用于tal:condition中,判断存在
 span tal:condition= exists: talData/title tal:content= talData/title 存在 /span  !-- 结果 --  span title1 /span 
使用default、structure语法default默认值;在 tal:define、tal:content、tal:attributes 使用
 span tal:define= myVar talData/title | default default my var value /span  p tal:content= some/var | other/path | default 没有var,没有找到path a href= unknown.html title= Unknown page tal:attributes= href item/href | default; title talData/title | default tal:content= item/title | default Unknown page /a  !-- 结果 --  p 没有var,没有找到path /p  a href= unknown.html title= title1 Unknown page /a 
使用structure语法允许将包括html/xml等变量输出显示;

注意存在XSS攻击风险,谨慎使用

在tal:content中使用
 p tal:content= talData/html /p  p tal:content= structure talData/html /p  !-- 结果 --  p h1 h1标题 /h1 /p  p h1 h1标题 /h1 /p 
在${}中使用
 p ${talData/html} /p  p ${structure talData/html} /p  !-- 结果 --  p h1 h1标题 /h1 /p  p h1 h1标题 /h1 /p 

相关文章推荐:

PHP的学习--PHP加密,PHP学习--PHP加密_PHP教程

以上就是PHP中TAL模板引擎语法的解析(代码)的详细内容,PHP教程

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表