0

我的表单有 3 个收集字段:

$builder->add('affiliates', 'collection', array(
    'type' => new AffiliateForm(),
    'allow_add' => true, 
    'allow_delete' => true, 
    'by_reference' => false,
    'options' => array(
        'affiliate_types' => $options['affiliate_types'],
        'business_types' => $options['business_types'],
    ),
));

$builder->add('other_businesses', 'collection', array(
    'type' => new OtherBusinessForm(),
    'allow_add' => true, 
    'allow_delete' => true, 
    'by_reference' => false,
));

$builder->add('welfare_activities', 'collection', array(
    'type' => new WelfareActivityForm(),
    'allow_add' => true, 
    'allow_delete' => true, 
    'by_reference' => false,
    'options' => array(
        'welfare_activity_types' => $options['welfare_activity_types'],
    ),
));

在模板中,我一个一个地分别显示每个子表单字段,如下所示:

<td class="t1c5" >{{ form_widget(affiliate.location) }}
                  {{ form_errors(affiliate.location) }}</td>

在表格的最后,我做了:

{{ form_rest(form) }}

但是当给定集合为空时,它会导致在表单末尾显示以下单词:“附属公司”、“其他企业”、“福利活动”。所以问题是:

  1. 为什么这些字会显示在表格上?
  2. 我可以执行以下操作来避免上述问题:

    <div style="display:none;">{{ form_rest(form) }}</div>    
    

    这是处理问题的正确方法(也许我可以隐藏一个字段或其他什么)?

谢谢你。

4

2 回答 2

0

这些词显示在表格上是因为您忘记了:

{{ form_label(affiliate.location) }}
…
…  

根据文档:

form_rest(视图,变量)

这会呈现给定表单尚未呈现的所有字段。始终将它放在表单中的某个地方是个好主意,因为它会为您呈现隐藏字段并使您忘记呈现的任何字段更加明显(因为它会为您呈现字段)。

于 2013-07-18T08:53:46.013 回答
0
    {{ form_end(form, {'render_rest': false}) }}
于 2015-03-03T09:19:09.863 回答