2016-05-03 17 views
13

Od Symfony 2.8, możesz przekazać FQCN tylko do metody createForm kontrolera. Tak, moje pytanie brzmi: jak przekazać parametry konstrukcji do konstruktu klasy formularza podczas tworzenia formularza w kontrolerze?Symfony 3 createForm z parametrami konstrukcji

< Symfony 2.8 mogłem zrobić (MyController.php):

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

Symfony 2.8+ mogę zrobić tylko (MyController.php):

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

Więc jak mogę przekazać w moim konstruować argumenty? Argumenty te są świadczone w działaniach kontrolerów, więc nie mogę korzystać z usług „formy jak” metoda ...

Odpowiedz

12

prostu:

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

która jest faktycznie jak to powinno być zrobione przed 2,8 anyway .

edit

oparte na Twój komentarz, musisz skonfigurować domyślne wartości w rodzaju klasy samego:

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

ta jest nieprawidłowa, pojawia się następujący błąd: Opcja „passwordRequired " nie istnieje. Zdefiniowane opcje to: "akcja", "pole_zwola_wyzwane", "attr", "auto_initialize" ... – LMS94

+1

nie jest niepoprawny, musisz określić domyślne opcje w klasie typów. – DevDonkey

+0

Dobrze, że zadziałało! Dzięki – LMS94