Последние записи в блоге

Фильтр escape

Фильтр 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 поддерживает следующие методы экранирования:

  • HTML: экранирует строку для контекста HTML. 
  • JS: экранирует строку для контекста JavaScript. 
  • CSS: экранирует строку для контекста CSS. CSS экранирование может быть применено к любой строке вставки в CSS и экранирует все, кроме буквенно-цифровых символов. 
  • URL: экранирует строку для URI.
  • html_attr: экранирует строку для контекста атрибута HTML.

Внутренне, 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'));
Агрегатор фриланс бирж FreelanceGrab, искать заказы на фрилансе стало еще проще.
8 крупных бирж, удобный поиск и фильтрация по проектам,
моментальное обновление ленты без перезагрузки страницы