在树枝中的块之间传递可变数据

时间:2017-03-17 10:25:26

标签: symfony twig

嫩枝:

{% set var = 'apple' %}

{% block A %}
    {{ var }} {# This prints apple #}
{% endblock %}

{% block B %}
    {% set var = 'banana' %}
    {{ var }} {# This prints banana #}
{% endblock %}

{% block C %}
    {{ var }} {# This prints apple, but I want it to print banana #}
{% endblock %}

有没有办法从块C中的块B获取更改后的值?

2 个答案:

答案 0 :(得分:3)

您可以破解它并在$_SESSION变量中设置值并在所需的块中访问它:

{% set var = 'apple' %}

{% block A %}
    {{ var }} {# This prints apple #}
{% endblock %}

{% block B %}
    {% set var = 'banana' %}
    {{ var }} {# This prints banana #}
    {{ app.session.set('var', var) }}
{% endblock %}

{% block C  %}
    {{ var }} {# This prints apple #}
    {% set var = app.session.get('var') %}
    {{ var }} {# This prints banana #}
{% endblock %}

以下是twigfiddle向您展示。

或者在您提到的评论部分中,您要访问{% block javascripts %}中已在{% block body %}中设置的变量。您可以破解它并在您的正文块中移动js代码。但我更愿意将js代码保存在一个位置。

{% set var = 'apple' %}

{% block A %}
    {{ var }} {# This prints apple #}
{% endblock %}

{% set var = 'banana' %}
{% block B %}
    {{ var }} {# This prints banana #}
`<script>{{ var }}</script>` {# Bring your js code in the required block#}
{% endblock %}

答案 1 :(得分:1)

你必须像这样在区块之外进行设置:

{% set var = 'apple' %}

{% block A %}
    {{ var }} {# This prints apple #}
{% endblock %}

{% set var = 'banana' %}
{% block B %}
    {{ var }} {# This prints banana #}
{% endblock %}

{% block C %}
    {{ var }}
{% endblock %}

以下是twigfiddle向您展示。