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 非常类似,多使用几次就可以很快速的解决一般的页面输入要求了。
网友评论