繁体   English   中英

Symfony3表单构建器表单字段,而不是div

[英]Symfony3 form builder form field in span instead of div

我有Symfony3应用程序,我正在制作一个简单的形式,树枝中的代码如下

 {{ form_start(edit_form) }}
      {{ form_widget(edit_form) }}
      <input type="submit" value="Edit" />
 {{ form_end(edit_form) }}

很简单。 这段代码创建的是一个表单,每个表单字段都在它自己的<div> ,这很好,但如果类型是日期,那么生成的html就像

<div>
  <label class="required">Term</label>
    <div id="appbundle_project_term">
      <select id="appbundle_project_term_year" name="appbundle_project[term][year]"></select>
      <select id="appbundle_project_term_year" name="appbundle_project[term][month]"></select>
      <select id="appbundle_project_term_year" name="appbundle_project[term][day]"></select>
    </div>
</div>

让我烦恼的是为日期类型字段创建的内部div FormBuilder中是否有一种方法可以保留类型日期,但删除此内部div而不使用javascript来处理它或在树枝模板中。 简单地说 - “内部标签=>跨度”。 这是非常通用的问题,因为我正在寻找一种通常更改自动生成的标签的方法,但如果需要,这里是如何在表单构建器中创建此表单字段

add('term',DateType::class, array(
            'widget' => 'choice',
            'label'=>"Term",
            'data'=>$project->getTerm()
        ))

您可以覆盖表单呈现,但有几种方法。

最简单的一个是覆盖表单主题窗口小部件块(在本例中为date_widget )并将form_theme设置为_self

基本示例:

{% form_theme form _self %}

{% block date_widget %}
    <span>
        {% if widget == 'single_text' %}
            {{ block('form_widget_simple') }}
        {% else %}
            {# rendering 3 fields for year, month and day #}
            {{ form_widget(form.year) }}
            {{ form_widget(form.month) }}
            {{ form_widget(form.day) }}
        {% endif %}
    </span>
{% endblock %}

{% block content %}
    {# ... form rendering #}

    {{ form_row(form.someDateField) }}
{% endblock %}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM