Symfony表格集合作为表格

Symfony表格集合作为表格,symfony,twig,symfony-forms,formbuilder,Symfony,Twig,Symfony Forms,Formbuilder,我很难理解symfony2的formbuilder如何处理集合 我有以下表单生成器 public function buildForm(FormBuilderInterface $builder, array $options) { $builder ->add('name', 'text') ->add('datatypes', 'collection', array( 'type' => ne

我很难理解symfony2的formbuilder如何处理集合

我有以下表单生成器

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', 'text')
        ->add('datatypes', 'collection', array(
            'type'          => new DatatypeType(),
            'allow_add'     => true,
            'allow_delete'  => true,
            'prototype'     => true,
            'by_reference'  => false,
            'label'         => false
            ));

}
使用默认的表单主题(form_div),这将创建以下构造

<div data-prototype="...">
  <div>
    <label>0</label>
    <div>
      <label>
      <input>
    <div>
      <label>
      <input>

0
首先,为什么要创建一个以“0”为内容的标签?我尝试了“label”=>false,但它仍然生成

其次,我希望将集合更改为如下,但原型仍将由form_div主题生成,因此即使我手动创建formparts,也无法使用

<table>
  <tr>
    <th>Title
    <th>Title
  <tr>
    <td>
      <input>
    <td>
      <input>
  <tr>
    <td>
      <input>
    <td>
      <input>

标题
标题

如何获得所需的结果?

集合中有子窗体的索引的0。 我实现集合的方式是逐字段打印表单。以这种方式,所有我不需要的标签都不会被渲染。 以下是一个例子:

<form class="form-horizontal" role="form" action="{{ path('path') }}" method="POST">
  {{form_row(form.name)}}
  <div class="collection-wrapper" data-prototype="{{ _self.datatype_prototype(form.datatypes.vars.prototype)|e }}">
      {% for datatype in form.datatypes %}
          {{ _self.datatype_prototype(datatype) }}
      {% endfor %} 
  </div>  
  {{ form_widget(form._token) }}
 </form>

不,由您决定如何显示表单,您可以自定义子表单的呈现方式,就像您对任何其他表单所做的一样(请参见)。

请将此问题分为两个问题?请为
0
问题创建一个新问题。这将使其他用户在将来更容易找到答案。
{% macro datatype_prototype(childForm) %}
   {{ form_widget(childForm) }}
{% endmacro %}