跨越Twig中模板层次结构的嵌套块

时间:2014-01-30 15:30:53

标签: php twig

我的视图view.twig扩展了template_child.twig,后者又扩展了template_base.twig

我希望能够将每个块嵌套在另一个块中,而不创建仅在扩展template_child时才能工作的“sub_content”块。因此view.twig可以扩展任一模板,而无需重命名块指令。

view.tig

{% extends "template_child.twig" %}
{% block content %}
    Stuff that should go in "content"
{% endblock content %}

template_child.tig

{% extends "template_base.twig" %}
{% block content %}
    <div id="styling-of-content">
        {% block content %}
        {% endblock content %}
    </div>
    Stuff that absolutely needs to be after "content"
{% endblock content %}

template_base.tig

<html><body>
    {% block content %}
    {% endblock content %}
</body></html>

当前Twig在尝试运行此代码时输出此错误:

  

块'content'已经在Y行的“template_child.twig”中定义了第X行

使用Twig v1.12.3

1 个答案:

答案 0 :(得分:2)

自从Twig在纯PHP类和方法中编译模板以来,这是不可能的。在PHP中,子方法总是能够覆盖父方法。

解决方案是使用view.twig中定义的sub_content块,该块包含在“template_child.twig”的内容块中。