Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Symfony2 HTML in the trans twig filter

I use the Symfony2.1 and have the default config.yml

Documentation said:

  {# but static strings are never escaped #}
  {{ '<h3>foo</h3>'|trans }}

But if I copy and paste it into the my empty template (without any additional autoescapes or another) I got the escaped string <h3>foo</h3>. What I do wrong?

like image 590
Mikhail Avatar asked Nov 22 '12 05:11

Mikhail


2 Answers

Try it with the twig raw filter:

{{ '<h3>foo</h3>' | trans | raw }}

However, do not use the raw filter if you are processing any user input! It allows for cross-site-scripting attacks, according to the creators of Symfony. See this similar question for a secure but more tedious alternative.

like image 155
redbirdo Avatar answered Oct 19 '22 02:10

redbirdo


Holding HTML stuff in translations is wrong, because translators usually break it. But if you really need it:

{% trans %}<h3>foo</h3>{% endtrans %}

https://github.com/symfony/symfony/issues/2713#issuecomment-12510417

like image 2
Artem L Avatar answered Oct 19 '22 02:10

Artem L