Symfony2如何使用FormBuilder删除字段的标签

时间:2012-08-17 13:57:21

标签: symfony

$builder->add('body','text',array('label' => FALSE)//default label is displayed
$builder->add('body','text',array('label' => '')//default label is displayed
$builder->add('body','text',array('label' => 0)//default label is displayed
$builder->add('body','text',array('label' => ' ')//empty label is displayed

但我不需要呈现label标记。 我在视图中使用form_widget(form),我无法使用form_row(form.field1) ... form_row(form.field25)来显示表单。我想仅使用FormBuilder删除标签。有可能吗?

4 个答案:

答案 0 :(得分:7)

您可以使用自己的twig文件扩展默认表单布局,如下所示:

<!-- import default layout from symfony -->  
{% use 'form_div_layout.html.twig' with field_label as base_field_label %}

<!-- overwrite the element you want to change (in this case default input-field -->
{% block field_row %}
    {% spaceless %}
        <div class="row">
            <!-- removing this line, you're nearly done -->
            {{ form_label(form) }}
            {{ form_widget(form) }}
        </div>
    {% endspaceless %}
{% endblock field_row %}

然后在twig文件中设置这个新的表单主题,呈现表单:

{% form_theme form 'VendorNameBundle:Folder:backend_fields.html.twig' %}

这就是它。

如果您想知道所有默认值,请查看存储库中的此文件:form_div_layout.html.twig

答案 1 :(得分:3)

我刚用sf2.4.6测试了这个工作解决方案:

$builder->add('body','text',array('label' => false);

此解决方案优于

label => ' '

只是渲染一个空格。此外,您不需要在form_widget和form_label中拆分渲染,最终删除form_label。

答案 2 :(得分:2)

更好的解决方案就是:

[.. Type.php]

$builder
            ->add('email', EmailType::class ) //will display default label
            ->add('username', TextType::class,
                array(
                    'label' => false,
                    'attr' => array(
//                      'class' => 'myclassfrom.css', //<- this one is realy avesome
                        'placeholder' => 'UsernameExample',
                        'autofocus' => '',

                    ),
            ))

所有你需要的只是放入你的相关树枝

 {{ form_start(form) }}
                        {{ form_row(form.username) }}
 {{ form_end(form) }}

答案 3 :(得分:0)

我的表单中有一系列集合字段(集合中的集合)。我对带有集合字段的条目标签有疑问。对于每个集合条目,标签自动生成为[0],[1],... [N]。要摆脱它,我唯一要做的就是在模板中添加空白标签块:

{% form_theme form _self %}

{% block _myformname_person_entry_label %}
{% endblock _myformname_person_entry_label %}

{% block _myformname_person_entry_adress_entry_label %}
{% endblock _myformname_person_entry_adress_entry_label %}

这不会覆盖模板或构建器类中{%block _myformname_person_row%},{%block _myformname_person_widget%}或{%block _myformname_person%}块中指定的任何标签:

$builder->add('person', 'collection', array(
'type' => new PersonType(),
'label' => 'List of Employees:')

在Symfony版本2.3上测试