Глобальный сырой выход в Twig - PullRequest
0 голосов
/ 06 апреля 2020

Можно ли установить директиву, что каждая переменная в шаблоне Twig в определенной области будет экранирована с помощью raw filter ?

Пример.

{% setAllRaw %}

    {{foo}} // this will be rendered as if foo|raw
    {{bar}} // this will be rendered as if bar|raw
    {{baz}} // this will be rendered as if baz|raw

{% endSetAllRaw %}

Вместо явной записи

    {{foo|raw}} 
    {{bar|raw}}
    {{baz|raw}}

Было бы замечательно, если бы это было унаследовано дочерними шаблонами ..

{% setAllRaw %}

    {{foo}} // this will be rendered as if foo|raw
    {% include 'component.twig' %} // every variable in this template will also be rendered as raw

{% endSetAllRaw %}

** AND / ИЛИ **

Есть ли способ указать в контроллере, что переменная должна быть представлена ​​как необработанная

Пример.

// Controller

$data['foo'] = renderAsRaw($foo);

return new Response($this->renderView('template.html.twig', $data));

// Template

{{foo}} // will be rendered as raw

Я пытался использовать autoescape , но это не работает, как я описал выше

{% autoescape %}
    {{foo}} // this does NOT render as raw
{% endautoescape %}

1 Ответ

2 голосов
/ 06 апреля 2020

Все ваши шаблоны по умолчанию используют автоэкранирование.

Вы можете отключить autoescape для части вашего шаблона, добавив false в autoescape объявление блока:

{% autoescape false %}
    {{ rawVar }}
{% endautoescape %}

Если вам нужно отключить автоэкранирование во всех ваших шаблонах, вы можете установить глобальный параметр в config.yml:

twig:
    autoescape: false
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...