是否可以在Twig中在布局文件中设置自动窗口策略

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以在Twig中在布局文件中设置自动窗口策略相关的知识,希望对你有一定的参考价值。

我有一个布局文件,在这样的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文档中找不到任何示例。如果我在模板中的autoescape块中添加content块,我可以使它工作,但这不是正确的方法。

例如,使用上面的代码,应将以下html / Javascript发送到{{ date }} =“17/12/2017 15:01:53”的浏览器:

<script type="text/javascript">
    cols:[
            { view:"text", name:"visitDate", value:"17x2F12x2F2017x2015x3A01x3A53", label:"Date/Time:", labelWidth:100, width:285, labelAlign:"right", readonly:true },
        ];
</script>

只有儿童模板content块中的模板变量才能被转义,而不是实际的Javascript代码,如果您使用{{ block('content')|e('js') }}这样的内容,就会得到这些代码。

答案

我能想到的一个解决方案是创建节点访问者类,它将处理每个树枝节点,并根据块的名称,它将应用相应的转义策略。

  1. 首先是create custom twig extension
  2. 创建节点访问者对象,它将转义策略应用于打开和关闭content块之间的每个节点
  3. 在扩展中注册节点访问者。

这是一个示例访问者,它将在js块中的每个qazxsw poi节点上应用qazxsw poi转义过滤器:

print

以上是关于是否可以在Twig中在布局文件中设置自动窗口策略的主要内容,如果未能解决你的问题,请参考以下文章

使用属性窗口在 QT 网格布局中设置小部件的行和列

当使用EntityType构建select时,如何在Twig中设置值?

在代码中设置自动布局约束时出现奇怪的问题

在Xcode中设置图像高度填充自动布局

当我们点击按钮时如何在 Ios 中设置自动布局?

自动布局、约束和旋转