Twig

The flexible, fast, and secure
template engine for PHP

a Symfony Product
Docs Tags set
You are reading the documentation for Twig 3.x. Switch to the documentation for Twig 1.x, 2.x.

Questions & Feedback

License

Twig documentation is licensed under the new BSD license.

set

Inside code blocks you can also assign values to variables. Assignments use the set tag and can have multiple targets.

Here is how you can assign the Fabien value to the name variable:

1
{% set name = 'Fabien' %}

After the set call, the name variable is available in the template like any other ones:

1
2
{# displays Fabien #}
{{ name }}

The assigned value can be any valid Twig expression:

1
2
3
{% set numbers = [1, 2] %}
{% set user = {'name': 'Fabien'} %}
{% set name = 'Fabien' ~ ' ' ~ 'Potencier' %}

Several variables can be assigned in one block:

1
2
3
4
5
6
{% set first, last = 'Fabien', 'Potencier' %}

{# is equivalent to #}

{% set first = 'Fabien' %}
{% set last = 'Potencier' %}

The set tag can also be used to "capture" chunks of text:

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

Caution

If you enable automatic output escaping, Twig will only consider the content to be safe when capturing chunks of text.

Note

Note that loops are scoped in Twig; therefore a variable declared inside a for loop is not accessible outside the loop itself:

1
2
3
4
5
{% for item in items %}
    {% set value = item %}
{% endfor %}

{# value is NOT available #}

If you want to access the variable, just declare it before the loop:

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

{# value is available #}