Symfony2表单集合:显示当前对象的索引

Sam*_*Sam 31 forms symfony

我在表单中显示集合时遇到问题.

在显示我的实体集时,我有这样的事情:

0
Name: myInputName
Address: myInputAddress

1
Name: myInputName
Address: myInputAddress
Run Code Online (Sandbox Code Playgroud)

我的问题是为什么Symfony2显示索引 ...

这对于所有已保存的实体都进入了我的收藏......

这里是我使用的代码:

$builder            
        ->add('person', 'collection', array(   
            'label' => ' ',             
            'type' => new PersonType(),
            'prototype' => true,
            'allow_add' => true,
            'allow_delete' => true,
            'by_reference' => false,
        ))
    ;
Run Code Online (Sandbox Code Playgroud)

在我的twig文件中:

<div>
    {{ form_widget(edit_form) }}    
</div>
Run Code Online (Sandbox Code Playgroud)

请帮忙

山姆

Dov*_*ius 81

删除集合项的索引(标签):

$builder            
    ->add('person', 'collection', array(
        ...
        'options' => array('label' => false)
    ))
;
Run Code Online (Sandbox Code Playgroud)

使用密钥entry_options代替optionsSymfony 3和4

如果要为每行添加自定义标签,您可以自己生成表单:

{{ form_start(edit_form) }}
    {% for person in form.persons %}
        {{ form_row(person, {'label': 'custom label per item' }) }}
    {% endfor %}
{{ form_end(edit_form) }}
Run Code Online (Sandbox Code Playgroud)

注意:在Symfony 2.3和2.4上测试过

  • 对于symfony3,使用`'entry_options'`而不是''options' (27认同)
  • @sectus同样适用于Symfony 4 (2认同)

小智 6

这是几天前,但因为我面对Symfony 3的同样问题,sectus的答案是正确的.

使用

'entry_options' => ['label'=>false],
Run Code Online (Sandbox Code Playgroud)

构建器中的选项可隐藏对象项.

最好的祝福


web*_*a2l 2

您可以自定义集合的呈现,以不显示索引,例如:

{% block _FORMNAME_person_widget %}
{% spaceless %}
    {% for child in form %}
        {{ form_widget(child.Name) }}
        {{ form_widget(child.Address) }}
    {% endfor %}
{% endspaceless %}
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

  • 这并不能真正解决问题。相反,它只是隐藏索引而不显示。我想知道您如何更改索引以表示实体的另一个值? (7认同)