如何以表单类型获取实体管理器

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(),
     ]
);