TWIG 模板的主要特征。
- 高效:Twig將模板編譯成了優(yōu)化了的PHP文件,與原生的PHP代碼比較而言,性能損耗非常小。
- 安全:Twig使用沙箱(sandbox)模式去運行模板中不被信任的代碼。這使得我們可以選擇Twig作為那些允許用 戶修改模板的應(yīng)用的模板引擎。
- 靈活:Twig具有靈活的語法分析器和語法解析器,它允許開發(fā)人員定義自己的標(biāo)簽(tags)和過濾器(filters),并且創(chuàng)建自己的領(lǐng)域特定語言(DSL,domain specific language)。
1. spaceless
作用:消除頁面中標(biāo)簽與標(biāo)簽之間的空格。
{% 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. 循環(huán)
按數(shù)組的 key 遍歷
{% for key in users|keys %}
{{ key }}
{% endfor %}
按數(shù)組的key,value遍歷
{% for index, user in users %}
{{ index }}:{{ user.id }}
{% endfor %}
6. autoescape
將字符串安全地處理成合法的指定數(shù)據(jù) (true 啟用 | false 禁用)
{% set var = '<a rehf="bigood.com" target="_blank">Bigood.com</a>' %}
{% autoescape true %}
{{ var }} {# 將會以文本的形式輸出 #}
{{ var|raw }} {# 將會以 html 標(biāo)簽的形式輸出 #}
{{ var|escape }} {# 將會以文本的形式輸出 #}
{% endautoescape %}
7. block
相當(dāng)于占位符,當(dāng)被另一個模板繼承時,可以調(diào)用這個模塊。定義時的內(nèi)容在繼承的模板中默認(rèn)是不會出現(xiàn)的,可以使用 {{ parent() }} 來顯示。塊名稱可以使用字母數(shù)字字符和下劃線,不允許使用破折號(-)。
{% block header %}
{% endblock %}
8. extends
類似 php 的 extends,不支持多重繼承,只支持一個擴(kuò)展模板
{% include %}:包含模板
{% extends %}:擴(kuò)展模板
{% embed %} xxx {% endembed %}:包含模板并擴(kuò)展該模板的內(nèi)容,相當(dāng)于 include 和 extends 的結(jié)合體
{% macro %} xxx {% endmacro %}:定義宏以便多次調(diào)用,與定義 PHP 函數(shù)無異
{% from aaa import bbb as ccc %}:從指定模板導(dǎo)入宏并設(shè)置別名
{% extends 'base.twig' %}
總結(jié): TWIG 的使用和 PHP 非常類似,多使用幾次就可以很快速的解決一般的頁面輸入要求了。