twig模板的簡單語法示例

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 非常類似,多使用幾次就可以很快速的解決一般的頁面輸入要求了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,836評論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法,內(nèi)部類的語法,繼承相關(guān)的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,738評論 18 399
  • 《ijs》速成開發(fā)手冊3.0 官方用戶交流:iApp開發(fā)交流(1) 239547050iApp開發(fā)交流(2) 10...
    葉染柒丶閱讀 5,275評論 0 7
  • 介紹 Jinja是基于python的模板引擎,功能比較類似于于PHP的smarty,J2ee的Freemarker...
    ZhouLang閱讀 7,967評論 0 2
  • 工廠模式類似于現(xiàn)實生活中的工廠可以產(chǎn)生大量相似的商品,去做同樣的事情,實現(xiàn)同樣的效果;這時候需要使用工廠模式。簡單...
    舟漁行舟閱讀 7,807評論 2 17