在枝杈UNESCAPE或HTML解码(PHP模板)(Unescape or html decode

2019-07-21 19:23发布

我用树枝1.12.2。 我的代码生成的代码背后的一些元素,树枝的最新版本的渲染这些,当他们得到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>&lt;a href=&#039;?download=/ddd.png&#039;&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=&#039;?download=/asdasd.png&#039;&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}}来呈现数据原样。

谢谢

Answer 1:

您可以使用raw过滤器,使树枝呈现原始的HTML

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

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


Answer 2:

你应该小心使用|原料。 说该数据是安全的,意味着你信任它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 }


Answer 3:

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

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


文章来源: Unescape or html decode in Twig (PHP Templating)
标签: php twig