2016-05-03 15 views
13

Poiché Symfony 2.8, è possibile passare solo l'FQCN nel metodo createForm del controller. Quindi, la mia domanda è, come faccio a passare i parametri di costruzione nel costrutto della classe del form quando creo il modulo nel controller?Symfony 3 createForm con i parametri di costruzione

< Symfony 2.8 avrei potuto fare (MyController.php):

$this->createForm(new MyForm($arg1, $arg2)); 

Symfony 2.8 o successiva Posso solo fare (MyController.php):

$this->createForm(MyForm::class); 

Così come posso passare nel mio costruire argomenti? Questi argomenti sono forniti nelle azioni di controllo, quindi non posso usare le "forme come i servizi" metodo ...

risposta

12

semplicemente:

$this->createForm(MyForm::class, $entity, ['arg1' => $arg1, 'arg2' => $arg2]); 

che è in realtà come si sarebbe dovuto fare prima di 2.8 in ogni caso .

modificare

in base al tuo commento, è necessario impostare i valori di default nel tipo classe stessa:

public function configureOptions(OptionsResolver $resolver) { 
    $resolver->setDefaults([ 
     'arg1' => null, 
     'arg2' => null, 
    ]); 
} 
+0

Questo non è corretto, ottengo il seguente errore: L'opzione "PasswordRequired " non esiste. Le opzioni definite sono: "azione", "allow_extra_fields", "attr", "auto_initialize" ... – LMS94

+1

non è corretto, è necessario specificare le opzioni di default nella classe del tipo. – DevDonkey

+0

Eccellente, ha funzionato! Grazie – LMS94

Problemi correlati