Il mio progetto mi richiede di ricostruire la funzionalità di un sistema di grandi dimensioni mantenendo la struttura del database (per ragioni di fatturazione storica). Ho iniziato con Symfony 2.0.x e ho avviato il processo di aggiornamento a Symfony 2.1.2.Accesso a scelte specifiche direttamente dall'elemento ChoiceType in Twig
In precedenza, ero in grado di accedere direttamente alle opzioni individuali di un gruppo radio (multiple = false, expanded = true) in Twig utilizzando la notazione dot. Per esempio, nella mia forma ho definito l'elemento simile a questo:
$builder->add('settings_group', 'choice', array(
'choices' => array(
'existing' => 'A pre-existing setting group',
'override' => 'Specify an override instead'
),
'multiple' => false, 'expanded' => true,
'property_path' => false
)
);
Nel mio template Twig, il mio margine di profitto è stato in questo modo:
<ul>
<li>
{{ form_widget(form.settings_group.existing) }}
[ .. dropdown ..]
</li>
<li>
{{ form_widget(form.settings_group.override) }}
[ .. text input .. ]
</li>
</ul>
Ha funzionato perfettamente per quello che dovevo fare, come i pulsanti di opzione "esistente" o "sovrascrittura" determinano quali campi sono stati mantenuti e quali sono stati ripristinati quando l'entità è stata salvata. In particolare, il mio problema sorge perché voglio separare manualmente i pulsanti di opzione e stampare vari altri campi modulo prima del prossimo pulsante radio. È un modello ricorrente in un numero di moduli in questo sistema, basato sulla funzionalità e sul database esistenti.
Dopo l'aggiornamento a Symfony 2.1, questo non è più possibile ed ottengo un errore:
Method "existing" for object "Symfony\Component\Form\FormView" does not exist
Ho provato varie possibilità tra cui .get() e l'iterazione di .choices() [che finisce dandomi oggetti ChoiceView che non posso quindi produrre usando form_widget()]. Ho provato a creare un tipo personalizzato per incapsulare un pulsante di opzione più i campi di impostazione associati, ma a causa del modo in cui vengono creati i nomi degli elementi non posso escludere che si escludano a vicenda. Ho anche provato a creare un tipo più complesso che rappresenta sia le opzioni che i campi associati, ma ancora una volta non è stato possibile accedere e rendere una scelta specifica nel modello del tipo.
Idealmente, spero in qualcosa dell'API che ho semplicemente trascurato e posso trovare/sostituire e farlo funzionare. In caso contrario, sarebbe gradito un consiglio su (o un collegamento a) un approccio più symfony-friendly per farlo.
Ciao, ero pieno di speranza. È vicino, ma senza sigaro. Mi viene detto: 'Chiave" esistente "nell'oggetto (con ArrayAccess) di tipo" Symfony \ Component \ Form \ FormView "non esiste ...' –
Un'idea: stai usando Twig {{dump ()} } per stampare il contenuto degli oggetti, come per il debug del tuo codice? Vedrò meglio in seguito quello che stai cercando di ottenere. –