Symfony 3 createForm with construct parameters

2022-08-30 21:13:19

从 Symfony 2.8 开始,您只能将 FQCN 传递到控制器 createForm 方法中。所以,我的问题是,当我在控制器中创建表单时,如何将构造参数传递到窗体类构造中?

< Symfony 2.8 I can do (MyController.php):

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

Symfony 2.8+ 我只能做 (MyController.php):

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

那么我该如何传入我的构造参数呢?这些参数在控制器操作中提供,因此我无法使用“表单即服务”方法...


答案 1

只是:

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

这实际上是在2.8之前应该如何完成的。

编辑

根据您的注释,您需要在类类型本身中设置默认值:

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

答案 2

推荐