迁移到Symfony3时遇到问题。 我在FormType类中有一个表单,我通过构造函数传递实体管理器。
以下是代码示例: 控制器
$form = $this->createForm(new SubjectType($emDefault));
表格类
class SubjectType extends AbstractType {
private $em;
public function __construct($em) {
$this->em = $em;
}
public function buildForm(FormBuilderInterface $builder, array $options) {
$builder
->add('subject', 'entity', array(
'em' => $this->em,
'class' => 'MyBundle:Subject',
'query_builder' => function ($em) {
return $em->createQueryBuilder('s')
->where('s.active = 1');
},
'property' => 'name')
)
->add('create', 'submit', array('label' => 'choose'));
}
...
Symfony 3将方法createForm更改为:
$this->createForm(SubjectType::class);
通过此声明,我不知道如何将实体管理器传递给表单类。
有人帮忙吗?
答案 0 :(得分:2)
您需要声明FormType as a service.
<强> services.yml 强>
services:
app.form.type.subject:
class: AppBundle\Form\Type\SubjectType
arguments: ["@doctrine.orm.entity_manager"]
tags:
- { name: form.type }
在构造函数中重新添加注释行,您将能够像以前的版本一样使用$this->em
。