Symfony 2,Twig:如何不转义字段值(与backbonejs和symfony 2一起使用)

2023-11-30

我正在使用以下代码渲染原型:

{{form_widget(form.get('prototype').myField, {'attr': {'value': '<%= myModelProperty %>'} }) }}

骨干JS应该读取此树枝块生成的代码,并将 替换为某个模型属性值。

这种情况不会发生,因为该值在 twig 中被转义,因此被替换为:

&lt;%= viewport %&gt;

我尝试在 *form_div_layout.html* 文件中强制将值设置为 RAW:

> {% block field_widget %} {% spaceless %}
>     {% set type = type|default('text') %}
>     <input type="{{ type }}" {{ block('widget_attributes') }} {% if value is not empty %}value="{{ value|raw }}" {% endif %}/> {%
> endspaceless %} {% endblock field_widget %}

但没有成功。

所以我的问题是如何不转义树枝中的字段值。

Thanks!

EDIT

解决方案: 所以实际上方法是正确的,我必须使用“原始”过滤器来使我的变量不被转义。 我有一个自动转义块集,可以容纳这个特定的输出,这就是为什么它必须“未转义”的原因。

Symfony 2 的 Twig 包提供了几个块来渲染表单数据,这些块使用一个名为“{% block widget_attributes %}”的特定块来进行属性渲染。

我所做的是编辑这个块(我有一个单独的模板文件,其中包含所有自定义块),这样我就可以添加一层“该值是否应该转义”:

{% block widget_attributes %}
{% spaceless %}
    id="{{ id }}" name="{{ full_name }}"{% if read_only %} disabled="disabled"{% endif %}{% if required %} required="required"{% endif %}{% if max_length %} maxlength="{{ max_length }}"{% endif %}{% if pattern %} pattern="{{ pattern }}"{% endif %}

    {% for attrname,attrvalue in attr %}
        {# Attribute value can be defined as an array. ['data']: contains the actual value, ['escape']: boolean (true if the value HAS to be escaped)#}
        {% if attrvalue.data is defined %}
            {% if not attrvalue.escape %}
                {{attrname}}="{{ attrvalue.data|raw }}"
            {% else %}
                {{attrname}}="{{ attrvalue.data|e }}"
            {% endif %}
        {% else %}
            {{attrname}}="{{attrvalue}}"
        {% endif %} 
    {% endfor %}

{% endspaceless %}
{% endblock widget_attributes %}

从我的树枝文件中调用:

{{ form_widget(form.displays.get('prototype').myField, {'attr': {'value': { 'data': myvalue, 'escape': false } } }) }}

当在 {{ }} twig 标签中打印值 so 时,转义就完成了,所以我之前所做的是将未转义的值发送到实际调用 print 的块,并在其中转义了值。

这对我有用! 谢谢!


解决方案:所以实际上方法是正确的,我必须使用raw过滤以使我的变量不被转义。我有一个autoescape包含此特定输出的块集,这就是它必须“未转义”的原因。

Symfony 2 的 Twig 包提供了几个块来渲染表单数据,这些块使用特定的块进行属性渲染,称为{% block widget_attributes %}.

我所做的是编辑这个块(我有一个单独的模板文件,其中包含所有自定义块),这样我就可以添加一层“该值是否应该转义”:

{% block widget_attributes %}
  {% spaceless %}
      id="{{ id }}" name="{{ full_name }}"{% if read_only %} disabled="disabled"{% endif %}{% if required %} required="required"{% endif %}{% if max_length %} maxlength="{{ max_length }}"{% endif %}{% if pattern %} pattern="{{ pattern }}"{% endif %}

      {% for attrname,attrvalue in attr %}
        {# Attribute value can be defined as an array. ['data']: contains the actual value, ['escape']: boolean (true if the value HAS to be escaped)#}
        {% if attrvalue.data is defined %}
          {% if not attrvalue.escape %}
            {{ attrname }}="{{ attrvalue.data|raw }}"
          {% else %}
            {{ attrname }}="{{ attrvalue.data|e }}"
          {% endif %}
        {% else %}
          {{ attrname }}="{{ attrvalue }}"
        {% endif %} 
      {% endfor %}

  {% endspaceless %}
{% endblock widget_attributes %}

从我的树枝文件中调用:

{{ form_widget(form.displays.get('prototype').myField, {'attr': {'value': { 'data': myvalue, 'escape': false } } }) }}

转义是在打印值时完成的,因此在{{ }}twig 标签,所以我之前所做的是将未转义的值发送到实际调用 print 并因此转义该值的块。

这对我有用!谢谢!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Symfony 2,Twig:如何不转义字段值(与backbonejs和symfony 2一起使用) 的相关文章

随机推荐

  • Swing 中的进度对话框

    我怎样才能制作模态JDialog没有按钮出现的持续时间需要Runnable实例完成并让该实例更新该对话框上的进度条 消息 显然意大利面条代码可能有效 但我正在寻找一种干净的设计 如果存在 您可能想调查一下进度监视器 如果操作时间较长 会自动
  • .Net 控制计算机之间大小的变化

    我有一个奇怪的问题 我需要弄清楚如何解决 过去几周我一直在我的笔记本电脑上开发一个项目 但是当我在其中一台工作电脑上打开程序时 很多控件的尺寸错误和重叠等 机器之间的差异是这样的 Laptop Windows 7 专业版 显示 1920 1
  • 在MySQL中,我们如何判断表的索引是否是聚集索引?

    在MySQL中 我们如何判断表的索引是否是聚集索引 我们可以用show index from table name获取有关表索引的信息 但我没有发现它显示每个索引是聚集的还是非聚集的 这样做的目的是MySQL中如果一个表有索引 那么该表就必
  • Django FormWizard 动态改变 form_list

    我在使用表单向导时遇到了一些问题 也许有人可以解释一下 根据 process step 方法中的文档字符串 我可以 动态更改 self form list 因此 根据我的项目需求 我将表单附加到 form list 中 我附加的表格包含问题
  • 在外发电子邮件 EWS 中设置回复地址

    运行交换 2013 我在 C 服务中使用 EWS 该服务从服务帐户发送电子邮件 我想让电子邮件有一个与发送帐户不同的回复地址 即通讯组列表地址 我怎样才能做到这一点 这EmailMessage ReplyTo字段是只读的 Code Exch
  • Django 快捷方式嵌套外键

    假设我的 models py 中有以下内容 class Book pass class Part book models ForeignKey Book class Chapter part models ForeignKey Part n
  • 它不会创建 Java VM (JNI)

    我的简单命令行应用程序 int tmain int argc TCHAR argv JavaVM jvm JNIEnv env JavaVMInitArgs vm args JavaVMOption options 1 options 0
  • 扩展server_name(SNI扩展)不与jdk1.8.0一起发送,但与jdk1.7.0一起发送

    我已经使用 ApacheCXF v3 0 4 实现了 JAX WS 客户端 一切正常 但当我想使用 java 8 jdk1 8 0 25 的安全连接 SSL TLS 时 问题就出现了 我在日志中看到以下异常 Djavax net debug
  • 如何在未知输入类型下使用 cin?

    我有一个 C 程序 需要接受用户输入 用户输入要么是两个整数 例如 1 3 要么是一个字符 例如 s 我知道我可以像这样得到两个整数 cin gt gt x gt gt y 但是 如果输入的是 char 我该如何获取 cin 的值呢 我知道
  • 在 IIS Express 中配置最大请求数

    如何配置 IIS Express 中允许的最大请求数 我想将其更改为仅允许一些请求来测试超出限制时会发生什么 可以使用以下方式配置 IIS ExpressapplicationHost config文件 它位于 userprofile my
  • Java - 如何将 PDF 打印到特定打印机?

    我在 Windows 8 1 中有 5 台打印机 并且 PDF 文件不在本地系统中 而是在 PHP 服务器中生成的 问题 如何从服务器获取 PDF 文件并打印到特定打印机 我正在尝试使用 Apache PDFBox 2 0 0 EDIT i
  • 如何分解行? [复制]

    这个问题在这里已经有答案了 我有一个数据表 如下所示 cep3 lt structure list lat c 23 39429 23 39988 23 38233 23 39009 23 40135 23 4019 lon c 46 32
  • 替换 tel 或 telprompt 拨打电话

    我制作了一个应用程序 用于在按下按钮时呼叫预定义的号码 据我所知 在应用程序内拨打电话的唯一方法是使用 tel 或 telprompt 当我提交应用程序时 我收到了带有以下描述的拒绝 2 5 详情 您的应用程序使用或引用以下非公共 API
  • php中事件的含义

    我也知道php和nodejs 在javascript中我们有异步编程 所以我理解其中事件的含义 但是我看到了Yii 和 Zend 2 中的事件也使用它们 但我无法理解它的含义 它在 php 中如何工作以及它到底有什么作用 首先 PHP中没有
  • 如何读取Android设备上的CPU频率[关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 有没有 Java API 可以实现这一点 我怎样才能阅读这些信息 要在 Android 上获得频率 只需读取 sys 目录中的这些特殊文件 cat
  • 根据另一个日期选择器实例更改 jQuery 日期选择器中显示的月份

    我有两个日期选择器字段 一个是 开始日期 另一个是 end date 我想要一个功能 在用户选择 开始日期 然后是 end date 日历应默认显示包含 开始日期 反之亦然 如果用户首先选择end date 日历为开始日期应显示包含所选的月
  • Spring Boot 2.7.1 与 JSF 2.2 (Mojarra) 和 Primefaces 6.2.9 集成

    我已经使用下面的堆栈进行了工作设置 春季MVC 5JSF Mojarra 2 2 14Primefaces 6 2 9 该应用程序是作为 WAR 构建的 它具有配置了 FacesServlet 的 web xml 来服务 xhtml 请求
  • 转换字符(强制转换与 .getNumericValue)

    为什么casting int 可以正确地将符号的char转换为int 但是 Character getNumericValue someSymbolCharValue 不能 E g Character getNumericValue 即使
  • 使用 Jackson 进行自定义反序列化:扩展默认反序列化器

    我想通过扩展默认解串器并在其后设置更多值来制作自己的解串器 simplified code public class Dto public String originalJsonString public MyFooDto extends
  • Symfony 2,Twig:如何不转义字段值(与backbonejs和symfony 2一起使用)

    我正在使用以下代码渲染原型 form widget form get prototype myField attr value 骨干JS应该读取此树枝块生成的代码 并将 替换为某个模型属性值 这种情况不会发生 因为该值在 twig 中被转义