枝条。覆盖已设置的变量

时间:2014-04-10 12:12:34

标签: variables override twig

我已经找到了解决这个问题的问题。 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?

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