twig模板的简单语法示例

TWIG 模板的主要特征。

  • 高效:Twig将模板编译成了优化了的PHP文件,与原生的PHP代码比较而言,性能损耗非常小。
  • 安全:Twig使用沙箱(sandbox)模式去运行模板中不被信任的代码。这使得我们可以选择Twig作为那些允许用 户修改模板的应用的模板引擎。
  • 灵活:Twig具有灵活的语法分析器和语法解析器,它允许开发人员定义自己的标签(tags)和过滤器(filters),并且创建自己的领域特定语言(DSL,domain specific language)。

1. spaceless

作用:消除页面中标签与标签之间的空格。

{% spaceless %}
<a rehf="bigood.com" target="_blank">Bigood.com</a>
<a rehf="bigood.com" target="_blank">Bigood.com</a>
{% endspaceless %}

2. 输出一个变量

{{ user.name }}
{{ user['name'] }}

3. if (判断一个变量是否存在)

{% if user is defined %}
{{ user.name }}
{% else %}
'没找到用户~'
{% endif %}

4. 条件语句

or 和 and

{% if a == '1' and b == '2' %}'true'{% endif %}
{% if a == '1' or b == '2' %}'true'{% endif %}

判断是否定义

{% if user is not defined %}
    'user 没有定义'
{% else %}
{{ user.anme }}
{% endif %}

判断是否为 null

{% if var is null %}
    {# do something #}
{% endif %}

判断是否为 false

{% if var is sameas(false) %}
'false'
{% else %}
'true'
{% endif %}

5. 循环

按数组的 key 遍历

{% for key in users|keys %}
{{ key }}
{% endfor %}

按数组的key,value遍历

{% for index, user in users %}
    {{ index }}:{{ user.id }}
{% endfor %}

6. autoescape

将字符串安全地处理成合法的指定数据 (true 启用 | false 禁用)

{% set var = '<a rehf="bigood.com" target="_blank">Bigood.com</a>' %}
{% autoescape true %}
    {{ var }}         {# 将会以文本的形式输出 #}
    {{ var|raw }}     {# 将会以 html 标签的形式输出 #}
    {{ var|escape }}  {# 将会以文本的形式输出 #}
{% endautoescape %}

7. block

相当于占位符,当被另一个模板继承时,可以调用这个模块。定义时的内容在继承的模板中默认是不会出现的,可以使用 {{ parent() }} 来显示。块名称可以使用字母数字字符和下划线,不允许使用破折号(-)。

{% block header %}
{% endblock %}

8. extends

类似 php 的 extends,不支持多重继承,只支持一个扩展模板
{% include %}:包含模板
{% extends %}:扩展模板
{% embed %} xxx {% endembed %}:包含模板并扩展该模板的内容,相当于 include 和 extends 的结合体
{% macro %} xxx {% endmacro %}:定义宏以便多次调用,与定义 PHP 函数无异
{% from aaa import bbb as ccc %}:从指定模板导入宏并设置别名

{% extends 'base.twig' %}

总结: TWIG 的使用和 PHP 非常类似,多使用几次就可以很快速的解决一般的页面输入要求了。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,860评论 18 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,742评论 18 399
  • 《ijs》速成开发手册3.0 官方用户交流:iApp开发交流(1) 239547050iApp开发交流(2) 10...
    叶染柒丶阅读 5,296评论 0 7
  • 介绍 Jinja是基于python的模板引擎,功能比较类似于于PHP的smarty,J2ee的Freemarker...
    ZhouLang阅读 7,971评论 0 2
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 7,827评论 2 17