2013-07-18 4 views
0

Моя форма имеет 3 поля Коллекция:Symfony 2, form_rest (форма) показывает поля сбора

$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>  
    

    Является ли это правильным способом решения этой проблемы (возможно, я могу сделать поле скрытой или любой другой)?

спасибо.

ответ

0

эти слова отображаются на форме, потому что вы забыли:

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

Согласно документу:

form_rest (вид, переменные)

Это делает все поля, которые имеют не но были предоставлены для данной формы. Это хорошая идея всегда иметь это где-то внутри вашей формы, поскольку оно будет отображать скрытые поля для вас и делать все поля, которые вы забыли, чтобы сделать их более очевидными (так как это отобразит поле для вас).

0
{{ form_end(form, {'render_rest': false}) }} 
Смежные вопросы