从表单创建连接实体

时间:2013-02-09 11:19:30

标签: php symfony

我有三个实体,UserProviderUserProvider(带有一些额外数据的连接实体)。

我正在尝试创建一个表单,用户通过勾选框来指定其提供者(这应该生成一些UserProvider个记录)。

我尝试过使用选项并生成新的表单类型,但似乎无法使其正常工作。这是我尝试的最后一件事:

$form = $this->createFormBuilder($user)
    ->add('userProviders', 'entity', array(
        'class' => 'MyAppBundle:UserProvider',
        'property' => 'provider.name'
        'choices' => $userProviders
    ))
    ->getForm();

其中$userProviders是我生成的一些实体的数组,将当前用户映射到所有可能的提供者,但这不起作用,因为实体不是持久的(因为它们可能不需要)。

在Symfony中最干净的方法是什么?

2 个答案:

答案 0 :(得分:1)

只需使用实体表单类的内部方式生成如下所示的数组:

use Doctrine\ORM\EntityRepository;
// ...

$builder->add('userProviders', 'entity', array(
    'class' => 'MyAppBundle:UserProvider',
    'property' => 'provider.name'
    'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('u')
            //Your Query here
        ;
    },
));

从这里采取:http://symfony.com/doc/master/reference/forms/types/entity.html

你可以在那里做你想做的一切,甚至可以对NOT IN个案件进行2次查询。

答案 1 :(得分:0)

作为解决方案,我刚创建了一个未绑定的表单Providers,并将其与当前User UserProviders一起保留。

这并不理想,因为重新访问表单不会显示现有的联接实体(UserProvider),并且需要额外的工作才能使这些实体可见。