Symfony 3使用构造函数参数创建表单

19

自从Symfony 2.8版本起,您只能将FQCN传递给控制器的createForm方法。所以,我的问题是,在控制器中创建表单时,如何将构造函数参数传递到表单类的构造函数中?

< Symfony 2.8之前我可以这样做(MyController.php):

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

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

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

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

1个回答

20

简单来说:

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

其实这就是在2.8之前应该采用的做法。

编辑

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

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

这是不正确的,我收到以下错误:选项“passwordRequired”不存在。定义的选项为:“action”,“allow_extra_fields”,“attr”,“auto_initialize”... - LMS94
2
这不是错误,你需要在类型类中指定默认选项。 - DevDonkey

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接