Я использую ветку 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><a href='?download=/ddd.png'>ddd.png</a></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><a href='?download=/asdasd.png'>asdasd.png</a></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 %}