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'],
    ),
));

テンプレートでは、以下のように各サブフォーム フィールドを 1 つずつ個別に表示します。

<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 に答える