Forms 从表单类获取存储库名称

Forms 从表单类获取存储库名称,forms,symfony,doctrine-orm,Forms,Symfony,Doctrine Orm,我希望在form类中使用repository name,以便可以基于ORM模型创建字段。我该怎么做 我问这个问题是因为这个表单类对于几个存储库类来说是通用的 这就是我想要创建表单的方式: $builder->add($field_name, 'entity', [ 'class' => 'TestBundle:'.$something, // entity name should go here 'property' =

我希望在form类中使用repository name,以便可以基于ORM模型创建字段。我该怎么做

我问这个问题是因为这个表单类对于几个存储库类来说是通用的

这就是我想要创建表单的方式:

$builder->add($field_name, 'entity', [
                'class' => 'TestBundle:'.$something, // entity name should go here
                'property' => $field_name,
                'disabled' => true,
                'data' => $data,
            ]);

这个方法位于
TestBundle\Form\Type
名称空间表单类中。我该怎么做?我还可以访问该类中的
$this->getdoctor()->getManager()->getRepository('TestBundle:Repo')

这应该指定为表单类型的强制选项:

class MyType extends AbstractType {
    public function buildForm(FormBuilderInterface $builder, array $options) {
        $builder->add(..., [
            'class' => 'TestBundle:' . $options['repository_name'],
            ...
        ]);
    }

    public function setDefaultOptions(OptionsResolverInterface $resolver) {
        $resolver->setRequired(['repository_name']);
    }
}
稍后,当您创建表单时,必须以以下方式使用它:

$form = $this->createForm(new MyType(), $someData, [
    'repository_class' => 'Abcdef'
]);