Forms Symfony2表单集合:显示当前对象的索引
我在表单中显示集合时遇到问题 当显示我的实体集合时,我得到如下结果:Forms Symfony2表单集合:显示当前对象的索引,forms,symfony,Forms,Symfony,我在表单中显示集合时遇到问题 当显示我的实体集合时,我得到如下结果: 0 Name: myInputName Address: myInputAddress 1 Name: myInputName Address: myInputAddress 我的问题是为什么Symfony2显示索引 这适用于我收藏中所有保存的实体 下面是我使用的代码: $builder ->add('person', 'collection', array(
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,
))
;
在我的小树枝文件中:
<div>
{{ form_widget(edit_form) }}
</div>
{{表单小部件(编辑表单)}
请帮忙
Sam您可以自定义集合的呈现,例如,不显示索引:
{% block _FORMNAME_person_widget %}
{% spaceless %}
{% for child in form %}
{{ form_widget(child.Name) }}
{{ form_widget(child.Address) }}
{% endfor %}
{% endspaceless %}
{% endblock %}
正在删除集合项的索引(标签):
$builder
->add('person', 'collection', array(
...
'options' => array('label' => false)
))
;
对于Symfony 3和Symfony 4,使用键entry\u 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和2.4上测试我知道这已经关闭了一段时间。不确定这是否在其他地方得到了解决。这个问题实际上很容易解决,我很惊讶在任何地方都没有关于这个问题的文档。在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->getData()使用对象。因为,在我的问题中,我使用的是一个表单主题,所以覆盖细枝并不是我真正的选择
希望这对某人有所帮助。使用下面@MrBandersnatch的解决方案,我不得不使用
$view->vars['name']
而不是$this->vars['name']
(Symfony 2.3)
(很抱歉没有将此作为对@MrBandersnatch的回答的评论,我还没有得到足够的声誉)。这是几天前的事,但因为我在Symfony 3中面临同样的问题,sectus的回答是正确的 使用
'entry_options' => ['label'=>false],
选项以隐藏对象项
最诚挚的问候非常感谢您。。。无空格方法在没有小部件的情况下删除标签?“删除HTML标记之间的空白”()它的用法在\vendor\symfony\src\symfony\Bridge\Twig\Resources\views\Form\Form\u div\u layout.HTML.twigt中很常见。这并不能真正解决问题。相反,它只是隐藏索引而不显示。我想知道你会如何改变索引,比如说,实体的另一个价值?我仍然想知道为什么symfony没有在收藏主题化上投入更多的精力。到目前为止,它似乎太多了。我希望在构建器中实现它,但这个解决方案可以。谢谢对于Symfony 3,使用
'entry\u options'
而不是'options'
@sectus同样适用于Symfony 4有人知道更通用的解决方案吗?是否有类似于捆绑包中预定义的FormType的东西,您可以在form builder中直接定义LabelField?我不知道这在Symfony 2.7中是否发生了更改,但现在似乎是$form->vars['name']='Foo bar baz'
在Symfony 3中是$view->vars['name']
这适用于Symfony 4