我在表单中显示收藏时遇到了问题。
在显示我的实体集时,我有这样的事情:
0
Name: myInputName
Address: myInputAddress
1
Name: myInputName
Address: myInputAddress
我的问题是为什么Symfony2会显示索引 ...
这是所有已保存的实体进入我的收藏......
这里是我使用的代码:
$builder
->add('person', 'collection', array(
'label' => ' ',
'type' => new PersonType(),
'prototype' => true,
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false,
))
;
在我的twig文件中:
<div>
{{ form_widget(edit_form) }}
</div>
请帮助
萨姆
答案 0 :(得分:81)
删除集合项的索引(标签):
$builder
->add('person', 'collection', array(
...
'options' => array('label' => false)
))
;
对Symfony 3和4
使用密钥entry_options
代替options
如果您想为每行添加自定义标签,您可以自己制作表单:
{{ form_start(edit_form) }}
{% for person in form.persons %}
{{ form_row(person, {'label': 'custom label per item' }) }}
{% endfor %}
{{ form_end(edit_form) }}
注意:在Symfony 2.3&amp; 2.4
答案 1 :(得分:6)
这个是几天前的,但因为我面对Symfony 3的同样问题,所以sectus的答案是正确的。
使用
'entry_options' => ['label'=>false],
构建器中的选项可隐藏对象项。
最好的问候
答案 2 :(得分:3)
您可以自定义集合的呈现,但不显示索引,例如:
{% block _FORMNAME_person_widget %}
{% spaceless %}
{% for child in form %}
{{ form_widget(child.Name) }}
{{ form_widget(child.Address) }}
{% endfor %}
{% endspaceless %}
{% endblock %}
答案 3 :(得分:1)
我知道这已经关闭了一段时间。并不确定这是否已在其他地方得到解决。这个问题实际上很容易修复,我很惊讶没有任何关于此的文档。在PersonType或集合中使用的任何类型中,只需将buildView中的vars ['name']修改为您想要显示为标签的内容。
public function buildView(FormView $view, FormInterface $form, array $options)
{
// Adjust the view based on data passed
$this->vars['name'] = $form->getData();
// Or...
$this->vars['name'] = 'Some random string';
}
如果你想要它是动态的,你可以通过form-&gt; getData()来使用该对象。因为,在我的问题中,我正在使用表单主题,覆盖树枝对我来说不是一个真正的选择。
希望这有助于某人。
答案 4 :(得分:0)
使用下面的@ MrBandersnatch解决方案,我不得不使用&vecStruct[0]
而不是&vecStruct[1]
(Symfony 2.3)。
(对于没有添加这个作为对@ MrBandersnatch的回答的评论而道歉,我还没有足够的声誉)。