Twig 如何导入其他文件中设置的变量

Twig 如何导入其他文件中设置的变量,twig,Twig,我有这样的情况: //index.html.twig {% use 'blockdefinition.html.twig' %} {% set hello = 'world' %} {{ block('myblock') }} // blockdefinition.html.twig {# @var hello string #} {% block myblock %} {% set var_1 = 'x' ~ hello %} {# I need the env here #}

我有这样的情况:

//index.html.twig
{% use 'blockdefinition.html.twig' %}
{% set hello = 'world' %}
{{ block('myblock') }}


// blockdefinition.html.twig
{# @var hello string #}
{% block myblock %}
    {% set var_1 = 'x' ~ hello %} {# I need the env here #}
    ...
    {% set var_1000 = 'y' ~ hello %}

    output something {{ var_1 ~ var2 }}.
{% endblock%}
在另一个块中,我需要相同的定义:

{# @var hello string #}
{% block otherblock %}
    {# same definitions as above #}
    {% set var_1 = 'x' ~ hello %}
    ...
    {% set var_1000 = 'y' ~ hello %}

    output something else {{ var_1 ~ var2 }}.
{% endblock %}
我想要的是一个定义变量的文件(它需要访问env variables
hello
):

然后在我的块中导入/扩展/使用它(在块中使用它很重要):


所以我正在寻找一种方法来定义变量并将它们导入另一个模板中。
use
extends
似乎都不适合我。我经常会遇到类似于
模板“mydefinitions”不能用作特征的错误

由于变量范围的限制,我不确定您是否能够实现这一点:
{% set var_1 = 'x' ~ hello %} {# I need the env here #}
...
{% set var_1000 = 'y' ~ hello %}
{% block myblock %}
    {% import/include/use 'mydefinitions' %}
    output something {{ var_1 ~ var2 }}.
{% endblock%}
{% block otherblock %}
    {% import/include/use 'mydefinitions' %}
    output something else {{ var_1 ~ var2 }}.
{% endblock %}