【问题标题】:Symfony2 formbuilder HTML fieldSymfony2 formbuilder HTML 字段
【发布时间】:2012-11-27 09:37:24
【问题描述】:

我正在 symfony2 中使用 formbuilder 创建一个表单。在这种形式中,我想放置一些自定义 HTML,但我不想将整个内容模板化,例如。我想使用{{ form_widget(form) }}。是否可以在字段之间放置一些自定义 html ?

@EDIT:让它更清楚

$builder
  ->add('description')
  ->add('thisIsMyHTMLField', '<p>Render this HTML</p>') //This is just custom html
  ->add('talentName')
  ->add('keywords')
  ->add('differentiation')

【问题讨论】:

  • 那么,换一种说法,你想在你的模板中自定义form_widget(form)方法渲染的html,对吧?
  • 不是真的,我猜它更像是一个自定义字段,它只是呈现我输入的 HTML,而不是表单字段。但是为此创建一个自定义表单字段似乎有点过头了。
  • 但是在单独渲染它们的时候为什么不在你的字段之间添加html代码呢?这是一个更清洁的解决方案。您还可以使用未映射到表单对象的其他字段。
  • 出于可重用性的原因,我不想开始单独渲染它们

标签: forms symfony customization formbuilder


【解决方案1】:

一种可能的方法(使您免于覆盖{{ form_widget() }} 的默认行为)是执行类似的操作

{% for fields in form %}
 {% if fields.vars.name != '_token' %}
  {% if fields.vars.errors|length %} <div="errors">
  {% else %} <div class="{{ cycle(["even","odds"], loop.index) }}">
  {% endif %}
  {{ form_label(fields) }}
  {{ form_widget(fields) }}
  {{ form_errors(fields) }}
  </div>
 {% endif %}
{% endfor %}

【讨论】:

    【解决方案2】:

    我了解您将表单完全提取为表单类型的动力,但在这种情况下,您正在寻找特定的布局控制。模板是应该进行布局的地方!

    在您的模板中,只需将表单分解为多个部分即可。

    写作时: {{ form_widget(my_form) }} 感觉很干净,绝对没有什么能阻止你完全控制布局:

    {{ form_row(my_form.an_item) }}

    &lt;div&gt;Custom HTML&lt;/div&gt;

    {{ form_row(my_form.another_item) }}

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-26
      • 2016-10-22
      • 1970-01-01
      • 1970-01-01
      • 2014-04-06
      相关资源
      最近更新 更多