Я использую Twig без Symfony.
Я настроил экземпляр Twig следующим образом:
$twig = new Twig_Environment($loader, [
'autoescape' => 'html',
'cache' => false,
]);
Однако в моем шаблоне у меня много выходных переменных во многих разных местах. Чтобы избежать данных, я должен написать:
{{ var1 | e }}
{{ var2 | e }}
..
{{ varN | e }}
без escape-фильтра | e данные не экранируются автоматически, несмотря на то, что я настроил для этого экземпляр Twig.
Итак, мой вопрос: как мне настроить Twig, чтобы все мои выходные данные в двойных фигурных скобках автоматически экранировались с использованием стратегии html?
Если мне нужно записать неэкранированные данные, я буду использовать {{ varX | raw }}
Нет. Я не хочу использовать другие теги. Какая разница, если я буду применять фильтры везде, лол.
Потому что вы можете просто поставить этот тег один раз, обернув все. Вместо использования фильтра для каждого вывода.
Видите, у меня смешанное содержимое. Есть части, от которых нельзя убегать, и от которых следует. Мне не нужно избегать всего шаблона. Но некоторые определенные возможности, количество которых может быть большим.
Так что вы просто сделаете именно то, что сказали, и используете {{ varX | raw }} при выводе чего-то, от чего не следует экранировать. Оборачивание всего шаблона в {% autoescape %} ничем не отличается от того, что по умолчанию для движка установлен автоматический выход. Вам все равно придется вручную убегать от всего, чего вы не хотите убегать.
В этом случае есть две проблемы. 1) Мне нужно добавить {% autoescape%} в каждый шаблон. 2) Почему требуется первоначальная конфигурация, если тег {% autoescape%} работает без нее?
html-экранирование является поведением по умолчанию. Вам действительно не нужно явно указывать его. Возможно, вам следует предоставить часть вашего фактического кода с образцом ввода и результирующим выводом, чтобы показать, где вы видите, что нет экранируется по умолчанию (без установки его в конструкторе)






Достаточно ли использовать тег
{% autoescape %}? Документы Twig.