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 #}
|