具有构造参数的Symfony 3 createForm

LMS*_*S94 17 php symfony

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

<Symfony 2.8我可以做(MyController.php):

$this->createForm(new MyForm($arg1, $arg2));
Run Code Online (Sandbox Code Playgroud)

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

$this->createForm(MyForm::class);
Run Code Online (Sandbox Code Playgroud)

那么如何传递构造参数呢?这些参数在控制器操作中提供,因此我不能使用"Forms as services"方法...

Dev*_*key 17

只是:

$this->createForm(MyForm::class, $entity, ['arg1' => $arg1, 'arg2' => $arg2]);
Run Code Online (Sandbox Code Playgroud)

实际上,无论如何它应该在2.8之前完成.

编辑

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

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

  • 这并没有错,您需要在类型类中指定默认选项。 (2认同)