如何以表单类型获取实体管理器
How to get entity manager in form type
如何在构建表单时获得实体管理器?
我想从数据库中搜索结果并为 choicetype 构建选项。
我知道我可以改用 entitytype 但在这种情况下我想在数据库中记录字符串而不是对象。
而且我还需要添加更多选项。
谢谢。
在 Symfony 3.2(可能还有其他版本,我不确定 3.1,但可能是一样的)中,$this->createForm()
方法需要一个字符串作为第一个参数,并且不能采用表单对象.
向表单添加 configureOptions
方法 class:
class YourFormType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'entityManager' => null,
]);
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
// Entity Manager is set in: $options['entityManager']
}
}
然后像这样在控制器中获取表单,传入实体管理器:
$form = $this->createForm(
YourFormType::class,
$yourEntity,
[
'entityManager' => $this->getDoctrine()->getManager(),
]
);
如何在构建表单时获得实体管理器?
我想从数据库中搜索结果并为 choicetype 构建选项。 我知道我可以改用 entitytype 但在这种情况下我想在数据库中记录字符串而不是对象。 而且我还需要添加更多选项。
谢谢。
在 Symfony 3.2(可能还有其他版本,我不确定 3.1,但可能是一样的)中,$this->createForm()
方法需要一个字符串作为第一个参数,并且不能采用表单对象.
向表单添加 configureOptions
方法 class:
class YourFormType extends AbstractType
{
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults([
'entityManager' => null,
]);
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
// Entity Manager is set in: $options['entityManager']
}
}
然后像这样在控制器中获取表单,传入实体管理器:
$form = $this->createForm(
YourFormType::class,
$yourEntity,
[
'entityManager' => $this->getDoctrine()->getManager(),
]
);