跨度中的 Symfony 表单生成器表单字段而不是 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 来处理它或在 twig 模板中。简单地说——"inner tag => span"。
这是一个非常普遍的问题,因为我正在寻找一种通常可以更改自动生成的标签的方法,但是如果需要的话,这里是如何在表单构建器中创建此表单字段的
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 %}
我有 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 来处理它或在 twig 模板中。简单地说——"inner tag => span"。
这是一个非常普遍的问题,因为我正在寻找一种通常可以更改自动生成的标签的方法,但是如果需要的话,这里是如何在表单构建器中创建此表单字段的
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 %}