2011-09-07 20 views
7

私はこの質問への拡張を持っています:How to deal with Form Collection on Symfony2 Beta? - 私のプロジェクトは似ていますが、オブジェクトは深くネストされています。私は1つまたは複数のContent要素を持つ記事を取得しています。それぞれには1つまたは複数のMediaが含まれています。モデルとコントローラはこれまでのところうまく動作していますが、私はテンプレートの入れ子を正しく表現する方法がわかりません。 フォーム/ ContentType.phpは、すべての権利になりますSymfony 2.0で複数のネストされたフォームコレクションを扱うには?

class ContentType extends AbstractType 
{ 
    public function buildForm(FormBuilder $builder, array $options) 
    { 
     $builder 
      ->add('headline') 
      ->add('text') 
      ->add('medias', 'collection', array(
       'type'  => new MediaType(), 
       'allow_add' => true 
      )) 
     ; 
    } 

そしてこれまでのところ、フォーム作成用のテンプレート(または編集)条この(ほとんどバニラ自動生成されたテンプレート)のようになります。

... 
<form action="{{ path('article_create') }}" method="post" {{ form_enctype(form) }}> 
    {{ form_widget(form) }} 

    {% for content in form.contents %} 
     {{ form_widget(content) }} 
    {% endfor %} 

    <p> 
     <button type="submit">Create</button> 
    </p> 
</form> 
... 

各コンテンツのメディアにアクセスして、適切に関連付けられるようにするにはどうすればよいですか?すべてのコンテンツのメディアを通じて

答えて

2

反復:

<form action="{{ path('article_create') }}" method="post" {{ form_enctype(form) }}> 
    {{ form_widget(form) }} 

    {% for content in form.contents %} 
     {% for media in content.medias %} 
      {{ form_widget(media) }} 
     {% endfor %} 
    {% endfor %} 

    <p> 
     <button type="submit">Create</button> 
    </p> 
</form> 
+0

お返事ありがとうございます!実際、私はすでにそこにいましたが、生成されたフォームフィールドのプロトタイプを使用して、コンテンツ要素とメディアをきれいに、動的に追加または削除する方法については完全にはっきりしていません。これまでの私の解決策は、それぞれ空のメディア要素を含むn個の空のコンテンツ要素を追加することです。これは、追加できるコンテンツとメディアの数を制限します。私はむしろ組み込みのプロトタイピングを動的にコンテンツ要素を追加するのに使うだろうが、関連するメディアを動的に追加する方法はわからない。 –

-1
<form action="{{ path('article_create') }}" method="post" {{ form_enctype(form) }}> 
    {% for media in form.contents.medias.children %} 
     {{ form_widget(media) }} 
    {% endfor %} 
    {{ form_rest(form) }} 
    <p> 
     <button type="submit">Create</button> 
    </p> 
</form> 
+0

あなたのコードにいくつかのコメントを追加してください。 – Yaroslav

関連する問題