我已经找到了解决这个问题的问题。 https://github.com/fabpot/Twig/issues/1244
但对我而言,某种方式不起作用......
#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?
答案 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
。