如何在Symfony Forms中自定义一个特定字段

时间:2016-11-15 09:46:46

标签: forms symfony twig

我正在渲染一个包含多个选择字段的表单。我希望以与其他字段不同的方式呈现一个特定选择字段

我试图使用:

{% form_theme form 'MyBundle:Form:my-choice-field.html.twig' %}
{{ form_widget(field) }}

但是,这会改变该表单中所有选择字段的外观。如果我将 form_theme 放在我希望以不同方式呈现的字段旁边,它什么都不做。

我曾想过创建一个新的表单类型,但它似乎过度使用,我只想为该特定字段设置不同的样式。有什么想法吗?

1 个答案:

答案 0 :(得分:0)

在文档中有一个描述how to personalize an individual field的部分,例如,仅自定义name实体的product字段:

{% form_theme form _self %}

{% block _product_name_widget %}
    <div class="text_widget">
        {{ block('form_widget_simple') }}
    </div>
{% endblock %}

{{ form_widget(form.name) }}

此处,_product_name_widget片段定义了用于ID为product_name(且名称为product[name])的字段的模板。

您还可以使用相同的方法覆盖整个字段行的标记:

{% form_theme form _self %}

{% block _product_name_row %}
    <div class="name_row">
        {{ form_label(form) }}
        {{ form_errors(form) }}
        {{ form_widget(form) }}
    </div>
{% endblock %}

{{ form_row(form.name) }}