Symfony2: автоматические htmlentities с использованием Twig

Я показываю некоторую переменную, полученную в моей базе данных с помощью Twig:

<p>{{ my_variable }}</p>

Дело в том, что эта переменная может содержать html-теги, например "<br />".

Кажется, что Twig автоматически вызывает некоторые функции, подобные htmlentities, при отображении переменных.

Есть ли способ отключить его, чтобы при отображении переменной, содержащей «Hello<br />world !», я получал:

Hello 
world !

скорее, чем :

Hello<br />world !

Спасибо


person Yoot    schedule 15.01.2013    source источник


Ответы (4)


Используйте {{ my_variable|raw }}, чтобы предотвратить автоматическое экранирование my_variable.

См. документацию Twig: http://twig.sensiolabs.org/doc/filters/raw.html

person dbrumann    schedule 15.01.2013
comment
Как раз то, что мне было нужно, Google не дал мне этот фильтр... или, может быть, я просто плохо искал ;) В любом случае спасибо (принимаю через 10 минут) - person Yoot; 15.01.2013
comment
вау, недавно я влюбился в Symfony2 и именно из-за таких вещей. Очень прост в использовании. - person Donovan; 20.07.2013

Попробуйте использовать это

{% autoescape false %}{{ my_variable}}{% endautoescape %}
person Mirage    schedule 16.01.2013
comment
помог мне для переменных, содержащих html-объекты - person Adrien G; 08.10.2014

еще лучше: {{ '<br />|raw('html') }} чтобы не экранировать другие разумные вещи.

person Florian Klein    schedule 15.01.2013
comment
html выглядит как стратегия по умолчанию для raw: github .com/fabpot/Twig/blob/master/lib/Twig/Extension/ Можете ли вы предоставить документацию или примеры такого использования? - person Damien; 15.01.2013
comment
вы также можете передать js, например, или любой вызываемый объект. - person Florian Klein; 15.01.2013

Если вы просто хотите использовать разрывы строк в тексте, хранящемся в вашей базе данных, но не хотите использовать html, вы также можете использовать фильтр nl2br, как в {{ var|nl2br }}. Позволяет использовать в тексте символ разрыва строки \n. Фильтр преобразует его в <br/>

person Bevelopper    schedule 23.02.2015