0

我有这种结构:

布局.twig:

{% include header.twig %}
{% block block1 %}
{% endblock %}

header.twig:

{% block block2 %}
{% endblock %}

index.twig:

{% extends "layout.twig" %}
{% block block1 %} text for block 1 {% endblock %}
{% block block2 %} text for block 2 {% endblock %}

当我渲染 index.twig block1 时,正如预期的那样,block1 被替换为文本值,但 block2 仍然为空。为什么 block2 不被重新声明的内容取代?对 TWIG 来说是正确的还是仅适用于 Yii 框架的 TWIG 实现的问题?我应该如何更改结构以使其按描述工作?

提前致谢)

4

1 回答 1

0

只是因为结构的原因,通常的做法是在布局中有一个根块,并覆盖模板中的一些块。

布局.twig:

{% block body %}
  {% block block2 %}
    {% include header.twig %}
  {% endblock %}

  {% block block1 %}default text for block 1 
  {% endblock %}
{% endblock %}

header.twig:

default text for block 2

index.twig:

{% extends "layout.twig" %}
{% block block1 %} text for block 1 {% endblock %}
{% block block2 %} text for block 2 {% endblock %}

输出:

text for block 1
text for block 2
于 2012-04-25T20:59:55.770 回答