在安全内容上使用twig宏似乎删除了安全标志
{% macro identity(value) %}
{{ value }}
{% endmacro %}
{{ "<br>"| raw }}
{{ _self.identity( "<br>"| raw) }}
{% autoescape false %}
{{ _self.identity( "<br>"| raw) }}
{% endautoescape %}
上面的代码只显示了2 <br>
。有没有办法禁用转义,或者在不编辑我的树枝宏的情况下将我的内容标记为安全?
答案 0 :(得分:0)
你确实是正确的,你必须将原始过滤器放在宏中,以便保持宏内的任何标签不会逃避输入,这至少在我看来是预期的行为。
在Twig中,宏不是函数或过滤器,它们只是简单的快捷方式,可以防止重复样板标签和代码。在创建和使用宏时,每次使用它时都要考虑编写整个代码,即
。而不是将您的宏视为一个调用{{ _self.identity( "<br>"| raw ) }}
实际上认为您正在编写的内容是{{ {{ "<br>"| raw }} }}
,因为您将宏输入的输出作为文字传递,而不是你写的表达。
如果您希望您的宏使用提供的输入作为模板进行操作,而不是按照设计操作输入任何传入的输出,您可以查看启用template_from_string
功能。