TWIG YII如何从包含文件重新声明阻止

时间:2011-09-20 11:03:04

标签: yii twig

我有这种结构:

layout.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被替换为文本值,正如预期的那样,但是block2仍为空。为什么block2不会被重新声明的内容取代? TWIG的共同点是否正确,或者只是Yii Framework的TWIG实现问题?我应该如何更改结构以使其按照描述工作?

提前致谢)

1 个答案:

答案 0 :(得分:0)

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

layout.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