PHP에서 TAL 템플릿 엔진 구문 분석(코드)
这篇文章给大家介绍的内容是关于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} </p> ${title} && ${key} <!-- 结果 --> <p>title1 && key1</p> title1 &&
定义默认值变量
<p tal:define="global fname string:fname1 string; lname string:lname1 string;"> ${fname} && ${lname} </p> ${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> 或 <p tal:define="global hello string:hello ${fname} welcome on this page"> ${hello} </p> <!-- 结果 --> <p>hello fname1 string welcome on this page</p>
定义变量,执行php方法
<p tal:define="global rand php: rand(1, 4)"> ${rand} </p> <!-- 结果 --> <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> <!-- 结果 --> <p>title1</p>
TAL有效空间
输出内容
${数据}
<p class="p p_${talData/title}">${talData/title}</p> <!-- 结果 --> <p class="p p_title1">title1</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> <!-- 结果 --> <li> 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> <p tal:omit-tag="php: true"> omit-tag值为真,不出现当前p标签,否则就出现当前p标签 </p> <!-- 结果 --> <p>omit-tag值为真,不出现当前p标签,否则就出现当前p标签</p> omit-tag值为真,不出现当前p标签,否则就出现当前p标签
;代替标签,标签永远不输出
<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 class="footer" phptal:cache="3h">...</p> 有效期可以有选择的跟随'per'参数来定义多少个缓存被共享,使用'per url'分别针对每个url复制元素. <ol id="breadcrumbs" phptal:cache="1d per url">...</ol>
使用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::ConstOfClass php: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 </p> <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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP 8.4는 상당한 양의 기능 중단 및 제거를 통해 몇 가지 새로운 기능, 보안 개선 및 성능 개선을 제공합니다. 이 가이드에서는 Ubuntu, Debian 또는 해당 파생 제품에서 PHP 8.4를 설치하거나 PHP 8.4로 업그레이드하는 방법을 설명합니다.

CakePHP는 PHP용 오픈 소스 프레임워크입니다. 이는 애플리케이션을 훨씬 쉽게 개발, 배포 및 유지 관리할 수 있도록 하기 위한 것입니다. CakePHP는 강력하고 이해하기 쉬운 MVC와 유사한 아키텍처를 기반으로 합니다. 모델, 뷰 및 컨트롤러 gu

VS Code라고도 알려진 Visual Studio Code는 모든 주요 운영 체제에서 사용할 수 있는 무료 소스 코드 편집기 또는 통합 개발 환경(IDE)입니다. 다양한 프로그래밍 언어에 대한 대규모 확장 모음을 통해 VS Code는

CakePHP는 오픈 소스 MVC 프레임워크입니다. 이를 통해 애플리케이션 개발, 배포 및 유지 관리가 훨씬 쉬워집니다. CakePHP에는 가장 일반적인 작업의 과부하를 줄이기 위한 여러 라이브러리가 있습니다.

이 튜토리얼은 PHP를 사용하여 XML 문서를 효율적으로 처리하는 방법을 보여줍니다. XML (Extensible Markup Language)은 인간의 가독성과 기계 구문 분석을 위해 설계된 다목적 텍스트 기반 마크 업 언어입니다. 일반적으로 데이터 저장 AN에 사용됩니다

JWT는 주로 신분증 인증 및 정보 교환을 위해 당사자간에 정보를 안전하게 전송하는 데 사용되는 JSON을 기반으로 한 개방형 표준입니다. 1. JWT는 헤더, 페이로드 및 서명의 세 부분으로 구성됩니다. 2. JWT의 작업 원칙에는 세 가지 단계가 포함됩니다. JWT 생성, JWT 확인 및 Parsing Payload. 3. PHP에서 인증에 JWT를 사용하면 JWT를 생성하고 확인할 수 있으며 사용자 역할 및 권한 정보가 고급 사용에 포함될 수 있습니다. 4. 일반적인 오류에는 서명 검증 실패, 토큰 만료 및 대형 페이로드가 포함됩니다. 디버깅 기술에는 디버깅 도구 및 로깅 사용이 포함됩니다. 5. 성능 최적화 및 모범 사례에는 적절한 시그니처 알고리즘 사용, 타당성 기간 설정 합리적,

문자열은 문자, 숫자 및 기호를 포함하여 일련의 문자입니다. 이 튜토리얼은 다른 방법을 사용하여 PHP의 주어진 문자열의 모음 수를 계산하는 방법을 배웁니다. 영어의 모음은 A, E, I, O, U이며 대문자 또는 소문자 일 수 있습니다. 모음이란 무엇입니까? 모음은 특정 발음을 나타내는 알파벳 문자입니다. 대문자와 소문자를 포함하여 영어에는 5 개의 모음이 있습니다. a, e, i, o, u 예 1 입력 : String = "Tutorialspoint" 출력 : 6 설명하다 문자열의 "Tutorialspoint"의 모음은 u, o, i, a, o, i입니다. 총 6 개의 위안이 있습니다
