Русскоязычная документация по Twig - PHP шаблонизатору. Руководство по Твиг на русском языке
Фильтр escape экранирует строку для вывода. Он поддерживает различные настройки в зависимости от контекста шаблона.
По умолчанию экранируется HTML:
{{ user.username|escape }}
Для удобства работы с фильтром у него есть псевдоним:
{{ user.username|e }}
Фильтр escape также может быть использован и в других контекстах, благодаря дополнительным аргументам, которые определяеют экранируемый текст:
{{ user.username|e }}
{# is equivalent to #}
{{ user.username|e('html') }}
А таким образом экранируется JavaScript:
{{ user.username|escape('js') }}
{{ user.username|e('js') }}
Фильтр escape поддерживает следующие методы экранирования:
Внутренне, escape использует родную функцию PHP htmlspecialchars для HTML.
При использовании авто-экранирования, Twig пытается не экранировать переменную с таким-же методом , но это не работает при использовании переменной в качестве параметра:
{% set strategy = 'html' %} {% autoescape 'html' %} {{ var|escape('html') }} {# won't be double-escaped #} {{ var|escape(strategy) }} {# will be double-escaped #} {% endautoescape %}
При использовании переменной в качестве параметра вы должны отключить авто- экранирование:
{% set strategy = 'html' %} {% autoescape 'html' %} {{ var|escape(strategy)|raw }} {# won't be double-escaped #} {% endautoescape %}
Вы можете создать свои методы экранирования, вызвав метод setEscaper() для экземпляра класса ядра. Первым аргументом является имя метода (для использования в вызове фильтра), а второй имя вызываемой функции:
$twig = new Twig_Environment($loader);
$twig->getExtension('core')->setEscaper('csv', 'csv_escaper'));