【发布时间】:2017-12-29 10:30:34
【问题描述】:
我有一个布局文件,在这样的 Javascript 数组中包含 {% block content %}{% endblock %}
<script type="text/javascript">
cols:[
{% block content %}{% endblock %}
];
</script>
然后在很多使用这样的布局文件的模板中进行这样的扩展(真正的模板有更多的代码行和变量):
{% block content %}
{ view:"text", name:"visitDate", value:"{{ date }}", label:"Date/Time:", labelWidth:100, width:285, labelAlign:"right", readonly:true },
{% endblock %}
由于content 块总是需要使用“js”策略进行转义,有什么方法可以在我厌倦的布局模板中指定它:
<script type="text/javascript">
cols:[
{% autoescape 'js' %}
{% block content %}{% endblock %}
{% endautoescape %}
];
</script>
但这似乎不起作用,并且在 Twig 文档中找不到任何示例。如果我在模板中的content 块内添加autoescape 块,我可以让它工作,但这感觉不是正确的方法。
例如,使用上面的代码,应该将以下 HTML/Javascript 发送到浏览器,其中{{ date }} = "17/12/2017 15:01:53":
<script type="text/javascript">
cols:[
{ view:"text", name:"visitDate", value:"17\x2F12\x2F2017\x2015\x3A01\x3A53", label:"Date/Time:", labelWidth:100, width:285, labelAlign:"right", readonly:true },
];
</script>
只有子模板 content 块中的模板变量应该被转义,而不是实际的 Javascript 代码,如果你使用类似于 {{ block('content')|e('js') }} 的东西,你会得到。
【问题讨论】: