Как настроить Twig для автоматического экранирования данных внутри двойных фигурных скобок?

Я использую 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 }}

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

Patrick Q 12.04.2018 15:56

Нет. Я не хочу использовать другие теги. Какая разница, если я буду применять фильтры везде, лол.

Sergej 12.04.2018 15:56

Потому что вы можете просто поставить этот тег один раз, обернув все. Вместо использования фильтра для каждого вывода.

Patrick Q 12.04.2018 15:58

Видите, у меня смешанное содержимое. Есть части, от которых нельзя убегать, и от которых следует. Мне не нужно избегать всего шаблона. Но некоторые определенные возможности, количество которых может быть большим.

Sergej 12.04.2018 15:59

Так что вы просто сделаете именно то, что сказали, и используете {{ varX | raw }} при выводе чего-то, от чего не следует экранировать. Оборачивание всего шаблона в {% autoescape %} ничем не отличается от того, что по умолчанию для движка установлен автоматический выход. Вам все равно придется вручную убегать от всего, чего вы не хотите убегать.

Patrick Q 12.04.2018 16:02

В этом случае есть две проблемы. 1) Мне нужно добавить {% autoescape%} в каждый шаблон. 2) Почему требуется первоначальная конфигурация, если тег {% autoescape%} работает без нее?

Sergej 12.04.2018 16:03

html-экранирование является поведением по умолчанию. Вам действительно не нужно явно указывать его. Возможно, вам следует предоставить часть вашего фактического кода с образцом ввода и результирующим выводом, чтобы показать, где вы видите, что нет экранируется по умолчанию (без установки его в конструкторе)

Patrick Q 12.04.2018 16:08
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
7
232
0

Другие вопросы по теме