在构建表单时如何获得实体管理器?
我想从数据库中搜索结果并构建choicetype的选项。 我知道我可以使用entitytype,但在这种情况下,我想在数据库中记录字符串而不是对象。 而且我还需要添加更多选项。
谢谢。
答案 0 :(得分:9)
在Symfony 3.2中(可能还有其他人,我不确定3.1,但它可能是相同的),$this->createForm()
方法需要一个字符串作为第一个参数,并且不能采用表单对象
在表单类中添加configureOptions
方法:
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(),
]
);