Symfony 2表单创建用户并添加组

Mit*_*oof 3 forms entity symfony

我想创建一个表单来添加用户:

$builder->add('firstname', 'text', array(
                    'required' => 'required'
                ))
                ->add('middlename')
                ->add('lastname')
                ->add('email', 'email')
                ->add('isActive');
Run Code Online (Sandbox Code Playgroud)

但我想添加一个组.我有一个实体"组"和一个表单"GroupType".但是如何在我的所有组中添加一个选项来选择一个或多个?

我试过了:

->add('groups', 'choice' )
Run Code Online (Sandbox Code Playgroud)

但得到这个错误:

Notice: Object of class Doctrine\Common\Collections\ArrayCollection could not be converted to int in /vendor/symfony/symfony/src/Symfony/Component/Form/Extension/Core/ChoiceList/ChoiceList.php line 457 
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?

red*_*rdo 10

要创建使用数据库中的所有Group对象填充的选项字段,请使用"entity"字段.要启用多项选择(1 +选项),请使用"多个"选项.例如:

$builder->add('groups', 'entity', array(
    'class' => 'YourBundle:Group',
    'property' => 'name',
    'multiple' => true,
));
Run Code Online (Sandbox Code Playgroud)

'property'选项的值确定显示哪个Group字段.如果需要在choice元素中对对象进行排序或显示对象的子集,请使用"query_builder"选项使用自定义查询加载选项.例如:

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

$builder->add('groups', 'entity', array(
    'class' => 'YourBundle:Group',
    'property' => 'name',
    'multiple' => true,
    'query_builder' => function(EntityRepository $er) {
        return $er->createQueryBuilder('g')
                  ->orderBy('g.name', 'ASC');
    },
));
Run Code Online (Sandbox Code Playgroud)

请参阅Symfony2文档中的实体字段类型.