Forms Symfony 2表单创建用户和添加组
我想创建一个表单来添加用户:Forms Symfony 2表单创建用户和添加组,forms,symfony,entity,Forms,Symfony,Entity,我想创建一个表单来添加用户: $builder->add('firstname', 'text', array( 'required' => 'required' )) ->add('middlename') ->add('lastname') ->add('email', 'email')
$builder->add('firstname', 'text', array(
'required' => 'required'
))
->add('middlename')
->add('lastname')
->add('email', 'email')
->add('isActive');
但我还想添加一个组。
我有一个实体“Group”和一个表单“GroupType”。
但是如何在我的所有组中添加一个选项来选择一个或多个
我试过:
->add('groups', 'choice' )
但是得到这个错误:
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
如何解决此问题?要创建包含数据库中所有组对象的选项字段,请使用“实体”字段。要启用多个选择(1+选择),请使用“多个”选项。例如:
$builder->add('groups', 'entity', array(
'class' => 'YourBundle:Group',
'property' => 'name',
'multiple' => true,
));
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');
},
));
“属性”选项的值决定显示哪个组字段。如果需要对choice元素中的对象进行排序或显示对象的子集,请使用“query_builder”选项使用自定义查询加载选项。例如:
$builder->add('groups', 'entity', array(
'class' => 'YourBundle:Group',
'property' => 'name',
'multiple' => true,
));
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');
},
));
请参阅Symfony2文档中的。如果出现如下错误:
类“AppBundle\Entity\User”中的属性“groups”可以使用方法“addGroup()”、“removeGroup()”来定义,但新值必须是数组或\Traversable的实例,“AppBundle\Entity\Group”给定。
必须尝试在用户类中添加Getter和setter