使用Twig声明模板并在父模板的块之间传递其他内容

时间:2020-03-26 12:50:02

标签: twig

我有以下代码,在布局中会重复多次:

<div id="hi">
    <div class="howAreYou">
        <p class="fineTYForAsking">
            <!-- additional HTML logic goes here -->
        </p>
    </div>
</div>

如何将以上html放入单个Twig模板中,然后使用该模板并在<!-- additional HTML logic goes here -->部分中放入我的其他特定html?

1 个答案:

答案 0 :(得分:0)

您可以只定义块并将模板嵌入到任何需要的地方

partial.twig.html

<div id="{{ id | default('hi') }}">
    <div class="howAreYou">
        <p class="fineTYForAsking">
             {% block content %}
             {% endblock %}
        </p>
    </div>
</div>

template.twig.html

{% embed "partial.html.twig" with { 'id' : 'foo' } %}
    {% block content %}
         Lorem Ipsum
    {% endblock %}
{% endembed %}

您还可以在for循环中使用嵌入。循环中已知的变量也可以在嵌入式文件中找到,例如

item.html.twig

<div{% if item.id|default %} id="{{ item.id }}"{% endif %}>
    <div class="howAreYou">
        <p class="fineTYForAsking">
             {% block title %}
                 {% if item.title is defined %}
                 <h1>{{ item.title }}</h1>
                 {% endif %}
             {% endblock %}
             {% block content %}
                 {% if item.content is defined %}
                 <p>{{ item.content }}</p>
                 {% endif %}             
             {% endblock %}            
        </p>
    </div>
</div>

template.html.twig

{% for item in items %}
    {% embed "item.twig" %}
    {% endembed %}
{% endfor %}

demo

相关问题