Twig 不会替换子模板中的块

Twig does not replace blocks from child template

我有一个简单的设置。包含一些 {% block ... %} 元素的父模板和定义这些元素的子模板。

奇怪的是(对我这个初学者来说),没有 {% block ... %} 元素被识别。

代码:

{# main.twig #}

Hello {% block greeting %}{% endblock %}

{% block body %}{% endblock %}
{# child.twig #}

{% extends "main.twig" %}

{% block greeting %}friend{% endblock %}

{% block body %}Some text{% endblock %}

{% block footer %}{% endblock %}

这已经不起作用

这里有一个(不工作的)确切问题的例子:

https://twigfiddle.com/p2i0ix

例子中我还加了第三层:

{# child_extend.twig #}

{% extends "child.twig" %}

{% block footer %}Footer text{% endblock %}

如您在示例中所见,没有 {% block ... %} 得到输出。

当然,我希望我所有的块都被替换并显示在各自的模板中。

我肯定遗漏了一些非常明显的东西。

预先感谢您的帮助。

在你的twigfiddle中,勾选你要测试的文件作为主模板。

如果要测试 child.twig,请将其作为主模板。

另一个问题是,块脚不是主文件,从中没有出现。

要么把它放在主文件中,要么你可以这样做:

{# child.twig #}

{% extends "main.twig" %}

{% block greeting %}friend{% endblock %}

{% block body %}Some text
{% block footer %}{% endblock %}
{% endblock %}

只是为了举例,最好把block footer放在主文件里,只填文件child_extend.twig

{# main.twig #}

Hello {% block greeting %}{% endblock %}

{% block body %}{% endblock %}
{% block footer %}{% endblock %}

-------------------------------
{# child.twig #}

{% extends "main.twig" %}

{% block greeting %}friend{% endblock %}

{% block body %}Some text{% endblock %}

-------------------------------
{# child_extend.twig #}

{% extends "child.twig" %}

{% block footer %}Footer text{% endblock %}