2011-09-07 18 views
7

Ho un'estensione a questa domanda: How to deal with Form Collection on Symfony2 Beta? - Il mio progetto è simile, ma gli oggetti sono nidificati più in profondità. Ho articoli che hanno uno o più elementi di contenuto, ognuno dei quali contiene uno o più media. Il modello e i controller stanno funzionando bene finora, ma non so come rappresentare correttamente il nesting nel mio modello. Form/ContentType.php sembra tutto a posto:Come gestire più raccolte di moduli annidate in 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 
      )) 
     ; 
    } 

E finora, il modello di modulo per la creazione (o la modifica) un articolo simile a questo (modello auto-generata quasi vaniglia):

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

Come accedere a ciascun contenuto multimediale in modo che vengano associati correttamente?

risposta

2

Scorrere media di tutto di contenuti:

<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

Grazie per la risposta! In realtà, ci sono già stato, ma non sono del tutto chiaro su come aggiungere e rimuovere in modo pulito e dinamico elementi di contenuto e media usando i prototipi generati del campo di forma. La mia soluzione finora è quella di aggiungere n elementi di contenuto vuoti, ciascuno contenente m elementi multimediali vuoti. Ciò limita il numero di contenuti e media che posso aggiungere. Preferirei utilizzare la prototipazione integrata per aggiungere in modo dinamico elementi di contenuto, ma non so come aggiungere dinamicamente i media associati. –

-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

Cura di aggiungere alcuni commenti al tuo codice quindi è più chiaro e sottostimato? – Yaroslav

Problemi correlati