set
Внутри блоков кода вы также можете присваивать значения переменным. Присваивания используют тег set и могут иметь несколько целевых объектов.
Вот как можно присвоить значение bar переменной %%%CODE_BLOCK_2%%:
{% set foo = 'bar' %}
После вызова %%%CODE_BLOCK_4%%, переменная foo доступна в шаблоне как и любая другая:
{# displays bar #}
{{ foo }}
Присвоенное значение может быть любым допустимым выражением Twig:
{% set foo = [1, 2] %}
{% set foo = {'foo': 'bar'} %}
{% set foo = 'foo' ~ 'bar' %}
Несколько переменных можно присвоить в одном блоке:
{% set foo, bar = 'foo', 'bar' %}
{# is equivalent to #}
{% set foo = 'foo' %}
{% set bar = 'bar' %}
Тег set также можно использовать для «захвата» фрагментов текста:
{% set foo %}
<div id="pagination">
...
</div>
{% endset %}
Внимание
Если вы включите автоматическое экранирование вывода, Twig будет считать содержимое безопасным только при захвате фрагментов текста.
Примечание
Обратите внимание, что циклы в Twig обладают областью видимости; поэтому переменная, объявленная внутри цикла %%%CODE_BLOCK_11%%, недоступна за пределами самого цикла:
{% for item in list %}
{% set foo = item %}
{% endfor %}
{# foo is NOT available #}
Если вам нужно получить доступ к переменной, просто объявите её перед циклом:
{% set foo = "" %}
{% for item in list %}
{% set foo = item %}
{% endfor %}
{# foo is available #}
© 2009–2018 by the Twig Team
Licensed under the three clause BSD license.
The Twig logo is © 2010–2020 Symfony
https://twig.symfony.com/doc/1.x/tags/set.html