withUsa la etiqueta with para crear un nuevo ámbito interno. Las variables establecidas dentro de este ámbito no son visibles fuera del mismo:
{% with %}
{% set value = 42 %}
{{ value }} {# value es 42 aquí #}
{% endwith %}
value no es visible aquí ya
En lugar de definir variables al principio del ámbito, puedes pasar un mapeo de variables que quieres definir en la etiqueta with; el ejemplo anterior es equivalente al siguiente:
{% with {value: 42} %}
{{ value }} {# value es 42 aquí #}
{% endwith %}
value no es visible aquí ya
{# funciona con cualquier expresión que se resuelva en un mapeo #}
{% set vars = {value: 42} %}
{% with vars %}
...
{% endwith %}
Por defecto, el ámbito interno tiene acceso al contexto del ámbito externo; puedes deshabilitar este comportamiento agregando la palabra clave only:
{% set zero = 0 %}
{% with {value: 42} only %}
{# solo value está definido #}
{# zero no está definido #}
{% endwith %}