symfony 2,form_rest(form)显示集合字段

时间:2013-07-18 08:47:09

标签: forms symfony collections

我的表单有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) }}

但是当给定的集合为空时,它会导致在表单末尾显示以下单词:“Affiliates”,“Other business”,“Welfare activities”。 所以问题是:

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

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

    处理问题的方法是否正确(也许我可以隐藏字段或其他内容)?

  3. 谢谢。

2 个答案:

答案 0 :(得分:0)

这些单词会显示在表单上,​​因为您忘了:

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

根据文件:

form_rest(查看,变量)

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

答案 1 :(得分:0)

    {{ form_end(form, {'render_rest': false}) }}