Unescape или html-декодирование в Twig (PHP Templating)

Я использую ветку 1.12.2. Мой код генерирует некоторые элементы из кода, при рендеринге с последней версией twig они получают html-encoded

{% for item in files_folders %} <tr class="{{ cycle(['tr_odd', 'tr_even'], loop.index) }}"> <td><img src="../templates/images/sharepoint/{{ item.ContentType }}.gif" border="0" alt=""/></td> <td>{{ item.Link }}</td> <td>{{ item.Modified }}</td> <td>{{ item.FileSize }}</td> <td>{{ item.FileType }}</td> </tr> {% endfor %} 

Это выведет это

 <tr class="tr_even"> <td><img src="../templates/images/sharepoint/Document.gif" border="0" alt=""/></td> <td>&lt;a href='?download=/ddd.png'&gt;ddd.png&lt;/a&gt;</td> <td>2013-03-04 17:47:38</td> <td>64.8 KB</td> <td>png</td> </tr> <tr class="tr_odd"> <td><img src="../templates/images/sharepoint/Document.gif" border="0" alt=""/></td> <td>&lt;a href='?download=/asdasd.png'&gt;asdasd.png&lt;/a&gt;</td> <td>2013-03-03 20:01:52</td> <td>66.04 KB</td> <td>png</td> </tr> 

Когда я отлаживаю и просматриваю данные до того, как их отправят на ветку, это не ускользнуло. Я не нашел альтернативы {{item.Link}} для рендеринга данных как есть.

благодаря

Вы можете использовать raw фильтр, чтобы сделать twig render raw html

http://twig.sensiolabs.org/doc/filters/raw.html

 {% autoescape %} {{ var|raw }} {# var won't be escaped #} {% endautoescape %} 

Вы должны быть осторожны с использованием | raw. Говоря, что данные в безопасности, означает, что вы доверяете ему 100%.

Лично я бы предложил использовать собственный фильтр завихрений:

 class CustomExtension extends \Twig_Extension { public function getFilters() { return array( new \Twig_SimpleFilter('unescape', array($this, 'unescape')), ); } public function unescape($value) { return html_entity_decode($value); } } 

Добавьте в свой services.yml следующее (или, альтернативно, переведите в xml).

  services: ha.twig.custom_extension: class: HA\SiteBundle\Twig\CustomExtension tags: - { name: twig.extension } 

Или http://twig.sensiolabs.org/doc/filters/raw.html

 {% autoescape false %} {{ your_item }}{# your_item won't be escaped #} {% endautoescape %}