本文档的使用到的数据($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和局部变量 keyp 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 stringTAL有效空间定义变量定义拼接变量
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 /pTAL有效空间输出内容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 /ptal:content= 数据 将会替代标签内的内容
p tal:content= talData/title test data span tips /span !-- 结果 -- p title1 /pTAL有效空间输出内容${数据}
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 /atal: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 /pTAL有效空间循环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 /liTAL有效空间标签渲染与否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 !-- 结果 -- 12345678910METAL空间 支持宏metal:define-macro 定义宏!-- 在pWeb/_macro/common.html文件中代码 -- tal:block metal:define-macro= WinPageData script type= text/javascript window.WinPageData = ${structure WinPageData}; /script /tal:blockmetal: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 /pMETAL空间 支持宏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:blockmetal: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:blockMETAL空间 支持宏宏获取参数!-- 在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:blockphptal空间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 /spanexists:可以用于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教程
郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。
新闻热点
疑难解答