Symfony3 表单 class 实体管理器
Symfony3 Form class Entity Manager
我在迁移到 Symfony3 时遇到了问题。
我在 FormType class 中有一个表单,我通过构造函数传递实体管理器。
代码示例如下:
控制器
$form = $this->createForm(new SubjectType($emDefault));
表格Class
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);
并且有了这个声明,我不知道如何通过实体管理器来形成 class。
有人帮忙吗?
您需要声明您的 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
。
我在迁移到 Symfony3 时遇到了问题。 我在 FormType class 中有一个表单,我通过构造函数传递实体管理器。
代码示例如下: 控制器
$form = $this->createForm(new SubjectType($emDefault));
表格Class
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);
并且有了这个声明,我不知道如何通过实体管理器来形成 class。
有人帮忙吗?
您需要声明您的 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
。