symfony2 twig whitelist html标签

jon*_*nv1 9 html templates escaping symfony twig

我将一个变量传递给我在Symfony2中的twig模板,这个变量可能包含<br />html标签,我试图创建一个扩展(函数),但变量仍然被转义.

如何输出允许<br />标记的树枝变量?是否有一个简单的解决方案,只允许在某些模板中使用允许标签的白名单?

我搜索过树枝沙箱,但我不确定这是不是我的解决方案.

编辑:我仍然希望转义变量,但只允许<br />标记.

Art*_*m L 39

实际上,您可以通过以下方式使用本机PHP函数strip_tags:

{{ var|striptags('<br>')|raw }}
Run Code Online (Sandbox Code Playgroud)

您可以使用以下代码允许多个标记:

{{ var|striptags('<br><p>')|raw }}
Run Code Online (Sandbox Code Playgroud)


Jak*_*las 1

最初我认为应该可以编写自定义转义策略,这样你就可以这样做:

{{ var|escape('html-custom') }}
Run Code Online (Sandbox Code Playgroud)

不幸的是事实并非如此。唯一可用的策略是 html 和 js。它们被硬编码在类文件twig_escape_filter()中定义的函数中Twig_Extension_Core

看来您唯一的选择是使用新过滤器编写自定义 estension:

{{ var|raw|customescape }}
Run Code Online (Sandbox Code Playgroud)

以下是自定义 Twig 扩展的示例以及如何在 Symfony 中注册它:Symfony2 Twig 扩展