本文檔的使用到的數據($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教程
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。
新聞熱點
疑難解答