2016-05-03 3 views
13

С Symfony 2.8 вы можете передавать FQCN только в метод createForm контроллера. Итак, мой вопрос: как передать параметры конструкции в конструкцию класса формы, когда я создаю форму в контроллере?Symfony 3 createForm с параметрами конструкции

< Symfony 2.8 Я мог бы сделать (MyController.php):

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

Symfony я могу 2.8 и сделать только (MyController.php):

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

Так как я могу передать в моей построить аргументы? Эти аргументы приводятся в действия контроллера, так что я не могу использовать «Формы как услуги» метод ...

ответ

12

просто:

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

, который на самом деле, как это должно было быть сделано до 2,8 в любом случае ,

редактировать

основаны на Ваш комментарий, Вам необходимо настроить значения по умолчанию в самом типе класса:

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

Это неправильно, я получаю следующее сообщение об ошибке: Опция «passwordRequired " не существует. Определенные параметры: «action», «allow_extra_fields», «attr», «auto_initialize» ... – LMS94

+1

не соответствуют вашим требованиям, вам нужно указать параметры по умолчанию в классе типов. – DevDonkey

+0

Отлично, это сработало! благодаря – LMS94

Смежные вопросы