资讯专栏INFORMATION COLUMN

PHPTAL模板引擎语法

Meils / 2038人阅读

摘要:来源于阿贤博客模板引擎语法数据本文档的使用到的数据定义变量标题两维数组标题标题标题标题输出的数据结构属性优先权定义变量属性有效空间定义变量定义全局变量和局部变量结果定义默认值变量结果有效空间定义变量定义拼接变量或结果

来源于:阿贤博客

PHPTAL模板引擎语法 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") );
//输出的数据结构
{"title":"title1","key":"key1","href":"xxx.html","html":"
h1u6807u9898","fun":{},"list1":[{"id":"1","title":"u6807u98981"},{"id":"2","title":"u6807u98982"},{"id":"3","title":"u6807u98983"},{"id":"4","title":"u6807u98984"}]}
属性优先权

define 定义变量

condition

repeat

content or replacae

attributes 属性

omit-tag

TAL有效空间 定义变量
定义全局(global)变量title和局部变量 key
${title} && ${key}
${title} && ${key}
title1 && key1
title1 &&
定义默认值变量
${fname} && ${lname}
${fname} && ${lname}
fname1 string && lname1 string
fname1 string &&
TAL有效空间 定义变量
定义拼接变量

${hello}

${hello}

hello fname1 string welcome on this page

定义变量,执行php方法

${rand}

2

TAL有效空间 输出内容
tal:replace="数据" 将用值替代整个标签,如果没有赋值将替空

    

渲染1

不渲染这里

不渲染这里

${talData/title}

渲染1

title1

title1

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

test datatips

title1

TAL有效空间 输出内容
${数据}

${talData/title}

title1

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

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

key1
当前数据不存在
TAL有效空间 判断条件
tal:condition="数据",条件是true,标签和它的内容就会被显示

标题

关键词

关键词

关键词

关键词

title1

key1

key1

key1

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
  • TAL有效空间 标签渲染与否
    tal:omit-tag="condition";要求phptal解析时忽略实体的开关闭标签,它的内容仍然会显示.

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

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

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

    omit-tag值为真,不出现当前p标签,否则就出现当前p标签
    ;代替标签,标签永远不输出
    文字会出现十次
    
    12345678910
    METAL空间 支持宏
    metal:define-macro 定义宏
    
    
        
    
    metal:use-macro 调用宏
    
        当前内容会被宏替换掉
        
    
    
    METAL空间 支持宏
    metal:define-slot 定义宏标签替换
    
    
        
        
    
    metal:fill-slot 使用宏标签替换
    
        
            var mlog_page = "mobile_index";
        
    
    METAL空间 支持宏
    宏获取参数
    
    
        

    ${title}

    ${key}

    宏传参数(tal:define)
    phptal空间
    phptal:debug
    phptal:cache 使整个元素(包括标签)保存在磁盘而不重新解析直到cache失效,有效期的格式由数字和"d", "h","m"或"s"组成.
    
    有效期可以有选择的跟随"per"参数来定义多少个缓存被共享,使用"per url"分别针对每个url复制元素.
    
    使用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中,相反判断
    not logged
    
    not logged
    exists:可以用于tal:condition中,判断存在
    存在
    
    title1
    使用default、structure语法
    default默认值;在 tal:define、tal:content、tal:attributes 使用
    
    default my var value
    
    

    没有var,没有找到path

    Unknown page

    没有var,没有找到path

    Unknown page
    使用structure语法 允许将包括html/xml等变量输出显示;
    注意存在XSS攻击风险,谨慎使用

    在tal:content中使用

    h1标题

    h1标题

    在${}中使用
    ${talData/html}
    ${structure talData/html}

    h1标题

    h1标题

    相关资料

    官网

    php手册

    来源于:阿贤博客

    文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

    转载请注明本文地址:https://www.ucloud.cn/yun/29147.html

    相关文章

    • 构建一个使用 Virtual-DOM 的前端模版引擎

      摘要:目录前言问题的提出模板引擎和结合的实现编译原理相关模版引擎的词法分析语法分析与抽象语法树代码生成完整的结语前言本文尝试构建一个前端模板引擎,并且把这个引擎和进行结合。于是就构思了一个方案,在前端模板引擎上做手脚。 作者:戴嘉华 转载请注明出处并保留原文链接( https://github.com/livoras/blog/issues/14 )和作者信息。 目录 前言 问题的提出...

      imccl 评论0 收藏0
    • js模版引擎介绍

      摘要:使用方法编译模板并根据所给的数据立即渲染出结果仅编译模版暂不渲染,它会返回一个可重用的编译后的函数根据给定的数据,对之前编译好的模板进行数据渲染参考资料模板引擎概述 js模版引擎介绍 JavaScript 模板是将 HTML 结构从包含它们的内容中分离的方法。模板系统通常会引入一些新语法,但通常是非常简单的,一个要注意的有趣的点是,替换标记通常是由双花括号({ {……} })表示,这也...

      duan199226 评论0 收藏0
    • 编写javascript模板引擎的几个步骤

      摘要:先推荐一个我自己写的模板引擎,项目地址。下面就是总结的编写模板引擎的几个步骤例如一个模板为最终会编译成为一个函数可以观察到模板中的所有的变量名都被指定成了参数对象的属性,并且该函数自始至终只做了一件事,就是构建字符串,并将其返回。 showImg(https://segmentfault.com/img/remote/1460000007498588?w=300&h=113); 先推荐...

      xiaoxiaozi 评论0 收藏0
    • Web前端模板引擎の字符串模板

      摘要:这是一个系列文章,将会介绍目前前端领域里用到的三种模板引擎技术,它们分别是基于字符串的模板基于操作的模板基于虚拟的模板本文是这个系列的第一篇,着重介绍基于字符串的模板引擎的实现原理,分析它的优点缺点以及使用的场景。 这是一个系列文章,将会介绍目前Web前端领域里用到的三种模板引擎技术,它们分别是: 基于字符串的模板 基于Dom操作的模板 基于虚拟Dom的模板 本文是这个系列的第一篇...

      Pluser 评论0 收藏0
    • 字符串与JavaScript之间的魔术—前端模板的原理及简单实现

      摘要:大多数模板实现原理基本一致模板字符串首先通过各种手段剥离出普通字符串和模板语法字符串生成抽象语法树然后针对模板语法片段进行编译,期间模板变量均去引擎输入的变量中查找模板语法片段生成出普通片段,与原始普通字符串进行拼接输出。 前端模板的发展 模板可以说是前端开发最常接触的工具之一。将页面固定不变的内容抽出成模板,服务端返回的动态数据装填到模板中预留的坑位,最后组装成完整的页面html字符...

      Steve_Wang_ 评论0 收藏0

    发表评论

    0条评论

    最新活动
    阅读需要支付1元查看
    <