Twig---基本使用


三種特殊語法:

{{ … }}   “說些什么”:輸出一個變量值或者一個表達式的結果到模板。如:{{ item.username }}。 twig也包含filters,它可以在模板渲染之前改變輸出內容。{{表達式 | filters}}。這里還需要注意的是,當表達式中傳值的時候,使用『:』,例如:{{ path(‘board_reply’,{id:item.id}) }}
{% … %}    “做些什么”:控制模板邏輯的tag(標簽),用於執行聲明,如if、for循環語句等。
{# … #}    “進行注釋”:它相當於php的語法。它用於注釋單行和多行。注釋的內容不作為頁面輸出。

block 占位

相當於是占位符,當模板被繼承的時候,可以調用。占位符,當被另一個模板繼承時,可以調用這個模塊。定義時的內容在繼承的模板中默認是不會出現的,可以使用 {{ parent() }} 來顯示。塊名稱可以使用字母數字字符和下划線,不允許使用破折號(-)。 

{% block ** %}
用來定義
{% endblock %}

extends 繼承

不支持多重繼承,只支持一個擴展模板

{% extends 'base.html.twig' %}

{% include %}:包含模板
{% extends %}:擴展模板
{% embed %} xxx {% endembed %}:包含模板並擴展該模板的內容,相當於 include 和 extends 的結合體
{% macro %} xxx {% endmacro %}:定義宏以便多次調用,與定義 PHP 函數無異
{% from aaa import bbb as ccc %}:從指定模板導入宏並設置別名

注意事項

如果在模板中使用{% extends %},它必須是模板中的第一個標簽

如果你發現在多個模板中有重復的內容,這可能意味着你需要為該內容在父模板中定義一個{% block %}了。

某些情況下,更好的解決方案可能是把這些內容放到一個新模板中,然后在該模板中include它。例如(在哪使用在哪 include): {{ include(‘article/article_details.html.twig’, { ‘article’: article }) }}

如果你需要從父模板中獲取一個block的內容,可以使用{{ parent() }}函數。如果你只是想在父級塊上添加新內容,而不是完全覆蓋它,這很有用。

記住 end

例如:{% if ** %}  和 {% endif %}   {% for %} 和 {% endfor %}

判斷

變量是否定義(存在)

{% if item is defined %}
{% item.name %}
{% endif %}

變量是否為空

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

     {{ item.id }} 

{% else %}
        <h1>還沒有人留言或留言已經刪除</h1>
{% endif %}

多條件使用:

{% for item in list %}
    <li> {{ item.title }} </li>
{% endfor %}

按數組的 key,value 進行遍歷,key=index,value=item

{% for index, item in list %}
    {{ index }}:{{ item.id }}
{% endfor %}

按照數組的 key 進行遍歷

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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM