我使用的是twig 1.12.2。我的代码从代码隐藏中生成一些元素,当使用最新版本的twig呈现这些元素时,它们会得到html编码。
{% 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>
当我调试并在将数据发送到twig之前查看数据时,它不会转义。我还没有找到任何替代{{ item.Link }}来按原样呈现数据的方法。
谢谢
发布于 2013-03-17 03:22:48
您可以使用raw
过滤器来使twig呈现原始的html
http://twig.sensiolabs.org/doc/filters/raw.html
{% autoescape %}
{{ var|raw }} {# var won't be escaped #}
{% endautoescape %}
发布于 2014-07-22 23:16:03
您应该小心使用|raw。说数据是安全的,意味着你是百分之百信任它。
就我个人而言,我建议使用自定义细枝过滤器:
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 }
发布于 2016-10-12 07:58:13
或http://twig.sensiolabs.org/doc/filters/raw.html
{% autoescape false %}
{{ your_item }}{# your_item won't be escaped #}
{% endautoescape %}
https://stackoverflow.com/questions/15453579
复制相似问题