Variables 细枝重写已设置的变量

Variables 细枝重写已设置的变量,variables,overriding,twig,Variables,Overriding,Twig,我一直在寻找解决问题的方法,这是在这个问题上提出的 但对我来说,不知怎么的,这不起作用 #layout.html.twig {{ show }} #base1.html.twig {% extends 'layout.html.twig' %} {% set show = 0 %} #base2.html.twig {% extends 'base1.html.twig' %} {% set show = 1 %} 但是当我渲染base2时,我只看到0。。。 为什么不是1?非常适合我。我想

我一直在寻找解决问题的方法,这是在这个问题上提出的

但对我来说,不知怎么的,这不起作用

#layout.html.twig
{{ show }}

#base1.html.twig
{% extends 'layout.html.twig' %}
{% set show = 0 %}

#base2.html.twig
{% extends 'base1.html.twig' %}
{% set show = 1 %}
但是当我渲染base2时,我只看到0。。。
为什么不是1?

非常适合我。我想这是个街区问题。可能base1的块出现在base2的块之后,并覆盖该值

此代码会出现问题,例如:

#base2.html.twig
{% extends 'base1.html.twig' %}
{% block content %}
    {% set show = 1 %}
    {{ parent() }}
    {{ show }}
{% endblock %}
你应该试试这个:

#layout.html.twig
{% block content %}
    {% set show = 0 %}
    {{ show }}
{% endblock %}

#base1.html.twig
{% extends 'layout.html.twig' %}
{% block content %}
    {{ parent() }}
    {% set show = 1 %}
    {{ show }}
{% endblock %}

#base2.html.twig
{% extends 'base1.html.twig' %}
{% block content %}
    {{ parent() }}
    {% set show = 2 %}
    {{ show }}
{% endblock %}

在继承过程的每个步骤中显示
show
变量,应该可以帮助您了解出了什么问题。最终响应应显示
0 1 2

是否调用
parent()
输出
0
?结果不是
0
01
02
?@gondo,是的,调用
parent()
输出上一个变量。正如我所说,最终的响应将是
0112
<对于布局,
0
对于base1,
0 1
对于base2,
0 1 2
对于base2。我明白了,谢谢澄清,我认为您的“最终响应”是针对每个块的