Twig 和自动转义

2024-03-02

我正在学习 Symfony2。目前,我正在尝试在树枝模板中渲染表单标签。该标签包含一个 html 标签,该标签在我的 twig 文件中未正确呈现。

下面是创建表单字段的代码段:

$builder->add('zipcode', 'integer', array(
        'label' => '<abbr title="Zone Improvement Plan">CAP</abbr> code',
        ));

在 twig 文件中,我渲染字段标签如下:

{{ form_label(form.zipcode) }}

我尝试了 raw、escape、e 过滤器,但我的 html 页面中提供的结果始终是字符串

 <abbr title="Zone Improvement Plan">CAP</abbr> code

而不是相应的HTML代码!

有什么建议吗? 提前致谢!

后来我找到了解决办法。 解决方案是在路径中禁用 Symfony 提供的标签块内的自动转义: symfony / src / Symfony / Bridge / Twig /资源/视图/表单/form_div_layout.html.twig

因此,在您的 twig 文件中,您必须将以下行放在表单之外: {% form_theme 表单_self %}

{% block generic_label %}
{% spaceless %}
  {% if required %}
      {% set attr = attr|merge({'class': attr.class|default('') ~ ' required'}) %}
  {% endif %}
  <label{% for attrname,attrvalue in attr %} {{attrname}}="{{attrvalue}}"{% endfor %}>{% autoescape false %}{{ label|trans }}{% endautoescape %}</label>
{% endspaceless %}
{% endblock %}

From 让·瓦尔·让 https://stackoverflow.com/users/1339429/jeanvaljean他自己:

{% autoescape false %}{{ form.zipcode.vars.label | trans }}{% endautoescape %}

为了将此行为推广到整个应用程序,您可以覆盖标签的表单块:

{% block generic_label %}
    {% spaceless %}
        {% if required %}
            {% set attr = attr|merge({'class': attr.class|default('') ~ ' required'}) %}
        {% endif %}
        <label{% for attrname,attrvalue in attr %} {{attrname}}="{{attrvalue}}"{% endfor %}>
            {% autoescape false %}{{ label|trans }}{% endautoescape %}
        </label>
    {% endspaceless %}
{% endblock %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Twig 和自动转义 的相关文章

随机推荐