Twig Custom Extension - 在扩展块中调用parent()

时间:2014-06-09 09:57:42

标签: symfony twig extend

有没有办法在自定义扩展模板中的扩展块中调用parent()函数?

在我的base.html.twig中,我有块footer_javascript,在我的自定义扩展中,我想在这个块中添加一些JS,但我需要确保原始块footer_javascript不会被扩展覆盖。我试过这个:

custom_extension.html.twig:

{# some html/twig code, not really important #}
{% block footer_javascript %}
    {{ parent() }}
    {# some javascript for this custom twig extension #}
{% endblock footer_javascript %}

但当然,我得到

  

致电"父母"在一个不扩展的模板上"使用"另一个   模板被禁止

base.html.twig - 具有块结构的基本模板:

{# base html/twig structure, not really important %}

{# block which will be extended/overwriten in templates which extends this base.html.twig #}
{% block footer_javascript %}
{% endblock footer_javascript %}

extended.html.twig - 扩展base.html.twig的模板;在此模板中,我使用自定义树枝扩展名:

{% extends "::base.html.twig" %}

{# some html/twig ... #}

{{ custom_extension(entity) }}

{% block footer_javascript %}
{{ parent() }}
{# javascript used for extend.html.twig #}
{% endblock footer_javascript %}

有没有办法在自定义扩展模板中扩展基础footer_javascript

1 个答案:

答案 0 :(得分:3)

要使用parent(),您必须扩展模板。

您的custom_extension.html.twig必须base.html.twig延长extended.html.twig

修改
如果您使用<body>的2个模板,则不必使用{{ parent() }},而是将您的js放入一个将包含在块中的树枝中。