Parsing of TAL template engine syntax in PHP (code)

不言
Release: 2023-04-03 13:56:02
Original
1982 people have browsed it

这篇文章给大家介绍的内容是关于php TAL模板引擎语法,内容很详细,有需要的朋友可以参考一下,希望可以帮助到大家。

PHP 数据

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

//定义talData变量
$talData = array();

$talData['title'] = 'title1';
$talData['key'] = 'key1';
$talData['href'] = 'xxx.html';
$talData['html'] = '

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') );
Copy after login
//输出的数据结构
{"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"}]}
Copy after login

属性优先权

  • define   定义变量

  • condition

  • repeat

  • content or replacae

  • attributes  属性

  • omit-tag

TAL有效空间

定义变量

定义全局(global)变量title和局部变量 key

    ${title} && ${key}

${title} && ${key}

title1 && key1

title1 &&
Copy after login
定义默认值变量

    ${fname} && ${lname}

${fname} && ${lname}

fname1 string && lname1 string

fname1 string &&
Copy after login

TAL有效空间

定义变量

定义拼接变量

    ${hello}

    ${hello}

hello fname1 string welcome on this page

Copy after login
定义变量,执行php方法

    ${rand}

2

Copy after login

TAL有效空间

输出内容

tal:replace="数据" 将用值替代整个标签,如果没有赋值将替空

    

渲染1

不渲染这里     

不渲染这里

${talData/title}

渲染1

title1

title1

Copy after login
tal:content="数据" 将会替代标签内的内容

    test datatips

title1

Copy after login

TAL有效空间

输出内容

${数据}

${talData/title}

title1

Copy after login
tal:attributes 将会改变tag的属性或值
sample link

key1
Copy after login
tal:on-error="string: 出错时显示内容" ;出错时显示error内容,并且没有当前标签;
key 已经是定义了
ky 没有定义的

key1
当前数据不存在
Copy after login

TAL有效空间

判断条件

tal:condition="数据",条件是true,标签和它的内容就会被显示

标题

关键词

关键词

关键词

关键词

title1

key1

key1

key1

Copy after login

TAL有效空间

循环

tal:repeat="赋值变量 数据";属性循环它的元素和内容直到结束
        
  •         repeat/item/key: ${repeat/item/key} ;(如果talData/list1是一组联合对象,返回item的键)
            repeat/item/index: ${repeat/item/index} ;(返回索引号(0~count-1))
            repeat/item/number: ${repeat/item/number} ;(返回索引号(1~count))
            repeat/item/even: ${repeat/item/even} ;(如果是偶数,true)
            repeat/item/odd: ${repeat/item/odd} ;(如果是奇数,true)
            repeat/item/start: ${repeat/item/start} ;(如果是第一个元素,true)
            repeat/item/end: ${repeat/item/end} ;(如果是最后一个元素,true)
            repeat/item/length: ${repeat/item/length} ;(返回talData/list1里面元素个数)
            -------------     
  •     
  • 列表li
  • repeat/item/key: 0 ;(如果talData/list1是一组联合对象,返回item的键)
    repeat/item/index: 0 ;(返回索引号(0~count-1))
    repeat/item/number: 1 ;(返回索引号(1~count))
    repeat/item/even: 1 ;(如果是偶数,true)
    repeat/item/odd: 0 ;(如果是奇数,true)
    repeat/item/start: 1 ;(如果是第一个元素,true)
    repeat/item/end: 0 ;(如果是最后一个元素,true)
    repeat/item/length: 4 ;(返回talData/list1里面元素个数)
  • 标题2
  • 标题3
  • 标题4
  • Copy after login

    TAL有效空间

    标签渲染与否

    tal:omit-tag="condition";要求phptal解析时忽略实体的开关闭标签,它的内容仍然会显示.

        omit-tag值为真,不出现当前p标签,否则就出现当前p标签

        omit-tag值为真,不出现当前p标签,否则就出现当前p标签

    omit-tag值为真,不出现当前p标签,否则就出现当前p标签

    omit-tag值为真,不出现当前p标签,否则就出现当前p标签
    Copy after login
    ;代替标签,标签永远不输出
    文字会出现十次
    
    12345678910
    Copy after login

    METAL空间 支持宏

    metal:define-macro 定义宏
    
    
        
    
    Copy after login
    metal:use-macro 调用宏
    
        当前内容会被宏替换掉
        
    
    

    Copy after login

    METAL空间 支持宏

    metal:define-slot 定义宏标签替换
    
    
        
        
    
    Copy after login
    metal:fill-slot  使用宏标签替换
    
        
            var mlog_page = 'mobile_index';
        
    
    Copy after login

    METAL空间 支持宏

    宏获取参数
    
    
        

    ${title}

        

    ${key}

    Copy after login
    宏传参数(tal:define)
    Copy after login

    phptal空间

    phptal:debug

    phptal:cache 使整个元素(包括标签)保存在磁盘而不重新解析直到cache失效,有效期的格式由数字和'd', 'h','m'或's'组成.
    
    有效期可以有选择的跟随'per'参数来定义多少个缓存被共享,使用'per url'分别针对每个url复制元素.
    
    Copy after login

    使用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
    Copy after login

    使用not:、exists:语法

    not:可以用于tal:condition中,相反判断
    not logged
    
    not logged
    Copy after login
    exists:可以用于tal:condition中,判断存在
    存在
    
    title1
    Copy after login

    使用default、structure语法

    default默认值;在 tal:define、tal:content、tal:attributes 使用
    
    default my var value
    
    

    没有var,没有找到path

    Unknown page

    没有var,没有找到path

    Unknown page
    Copy after login

    使用structure语法

    允许将包括html/xml等变量输出显示;

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

    在tal:content中使用

    h1标题

    h1标题

    Copy after login
    在${}中使用

    ${talData/html}

    ${structure talData/html}

    h1标题

    h1标题

    Copy after login

    相关文章推荐:

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

    The above is the detailed content of Parsing of TAL template engine syntax in PHP (code). For more information, please follow other related articles on the PHP Chinese website!

    Related labels:
    php
    source:php.cn
    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Popular Tutorials
    More>
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template
    About us Disclaimer Sitemap
    php.cn:Public welfare online PHP training,Help PHP learners grow quickly!