Symfony 带有include的细枝简单覆盖

Symfony 带有include的细枝简单覆盖,symfony,twig,Symfony,Twig,我有一个简单的细枝模板,如果我想覆盖include中的一个块 base.html.twig: {% block razem %} {% include '_ga.code.html.twig' %} {% endblock %} {% block wspolny %} should be common {% endblock %} {% block googleAnalitics %} for overridden {% endblock %} {% block r

我有一个简单的细枝模板,如果我想覆盖include中的一个块

base.html.twig

{% block razem %}
    {% include '_ga.code.html.twig' %}
{% endblock %}
{% block wspolny %}
    should be common
{% endblock %}

{% block googleAnalitics %}
    for overridden
{% endblock %}
{% block razem %}{% endblock %}
{% block wspolny %}
    should be common
{% endblock %}

{% block googleAnalitics %}
    for overridden
{% endblock %}
\u ga.code.html.twig

{% block razem %}
    {% include '_ga.code.html.twig' %}
{% endblock %}
{% block wspolny %}
    should be common
{% endblock %}

{% block googleAnalitics %}
    for overridden
{% endblock %}
{% block razem %}{% endblock %}
{% block wspolny %}
    should be common
{% endblock %}

{% block googleAnalitics %}
    for overridden
{% endblock %}
success.html.twig

{% extends 'base.hmtl.twig' %}

{% block razem %}
    {{ parent('wspolny') }}

    {% block googleAnalitics %}
        overriding part
    {% endblock %}
{% endblock %}
{% extends 'base.hmtl.twig' %}

{% block razem %}
    {% embed '_ga.code.html.twig' %}
        {% block googleAnalitics %}
            overriding part
        {% endblock %}
    {% endembed %}
{% endblock %}
错误在哪里

我希望呈现如下内容:

should be common
overriding part

在细枝中,不能替代包含中的块。为此,您必须使用嵌入,但必须在使用模板中执行,而不是在基本模板中

base.html.twig

{% block razem %}
    {% include '_ga.code.html.twig' %}
{% endblock %}
{% block wspolny %}
    should be common
{% endblock %}

{% block googleAnalitics %}
    for overridden
{% endblock %}
{% block razem %}{% endblock %}
{% block wspolny %}
    should be common
{% endblock %}

{% block googleAnalitics %}
    for overridden
{% endblock %}
\u ga.code.html.twig

{% block razem %}
    {% include '_ga.code.html.twig' %}
{% endblock %}
{% block wspolny %}
    should be common
{% endblock %}

{% block googleAnalitics %}
    for overridden
{% endblock %}
{% block razem %}{% endblock %}
{% block wspolny %}
    should be common
{% endblock %}

{% block googleAnalitics %}
    for overridden
{% endblock %}
success.html.twig

{% extends 'base.hmtl.twig' %}

{% block razem %}
    {{ parent('wspolny') }}

    {% block googleAnalitics %}
        overriding part
    {% endblock %}
{% endblock %}
{% extends 'base.hmtl.twig' %}

{% block razem %}
    {% embed '_ga.code.html.twig' %}
        {% block googleAnalitics %}
            overriding part
        {% endblock %}
    {% endembed %}
{% endblock %}

我认为重写块并重用其他块的最佳方法是在希望执行重写的位置扩展基础模板(可能会向预先存在的模板添加一些代码),并应用所谓的:

水平重用是一种高级的细枝功能,在常规模板中几乎不需要。它主要用于需要在不使用继承的情况下使模板块可重用的项目

从这一点开始,您只需使用
base.html.twig
模板并扩展
\u ga.code.html.twig
,如下所示:

success.html.twig

如果要使单个块过载,还可以使用
parent()
函数;因此,您可以向扩展块添加一些其他信息

如果你需要更复杂的东西,你应该去做


嗨,欢迎来到苏。你能写更多关于你的问题吗?你的问题不是很清楚,我认为错误在“扩展”。它声明“base.twig”而不是“base.html.twig”。