2011-09-07 79 views
7

我對這個問題有了一個擴展:How to deal with Form Collection on Symfony2 Beta? - 我的項目很相似,但對象嵌套得更深。我有文章有一個或多個內容元素,其中每個元素包含一個或多個媒體。模型和控制器目前工作良好,但我不知道如何正確表示嵌套在我的模板中。 表格/ 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個空白內容元素,每個元素包含m個空媒體元素。這限制了我可以添加的內容和媒體的數量。我寧願使用內置的原型來動態添加內容元素,但我不知道如何動態添加關聯的媒體。 –

-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