set

在代码块中,还可以为变量赋值。作业使用 set 标记并可以有多个目标。

下面是如何分配 bar 价值 foo 变量:

1
{% set foo = 'bar' %}

set 打电话,那个 foo 与其他变量一样,变量在模板中可用:

1
2
{# displays bar #}
{{ foo }}

赋值可以是任何有效值 Twig expression

1
2
3
{% set foo = [1, 2] %}
{% set foo = {'foo': 'bar'} %}
{% set foo = 'foo' ~ 'bar' %}

可以在一个块中分配多个变量:

1
2
3
4
5
6
{% set foo, bar = 'foo', 'bar' %}

{# is equivalent to #}

{% set foo = 'foo' %}
{% set bar = 'bar' %}

这个 set 标记还可用于“捕获”文本块:

1
2
3
4
5
{% set foo %}
    <div id="pagination">
        ...
    </div>
{% endset %}

警告

如果启用自动输出转义,Twig只在捕获文本块时考虑内容是安全的。

注解

注意,循环的作用域是在Twig中定义的;因此在 for 循环不能在循环本身之外访问:

1
2
3
4
5
{% for item in list %}
    {% set foo = item %}
{% endfor %}

{# foo is NOT available #}

如果要访问变量,只需在循环之前声明它:

1
2
3
4
5
6
{% set foo = "" %}
{% for item in list %}
    {% set foo = item %}
{% endfor %}

{# foo is available #}