我想创建一个表单来编辑我的用户。 manymany 连接的用户和角色。在UserUsers实体中,我有一个$roles变量ArrayCollection
:
public function __construct()
{
$this->roles = new ArrayCollection();
}
在我的表单上,我想通过多个选择表单元素向我的用户添加角色。在我的用户表单中:
public function buildForm( FormBuilderInterface $builder, array $options ) {
$builder->add( 'username' )
->add( 'password', 'repeated', array(
'type' => 'password',
'mapped' => false,
'required' => false,
'first_options' => array(
'label' => 'Password' ),
'second_options' => array(
'label' => 'Repeat Password' ) ) )
->add( 'roles', 'choice', array(
'mapped' => false,
'multiple' => true ) );
}
现在我的多重选择是空的
如果我将映射为true,我得到一个错误消息:
UserRoles无法转换为int
我已经尝试了很多方法,但是我都不能正确地解决这个问题。
对于实体的选择,你应该使用特殊的选择字段类型'entity'(参见Symfony手册中的实体字段类型)。举个例子,看看我对一个类似问题的回答。如果你得到更多的错误,你可能也会发现这个问题在角色接口和管理角色有帮助。
对于fosuserbundle,我是这样做的:
$builder->add('roles', 'choice', array(
'multiple' => true,
'choices' => array(
'ROLE_USER' => 'User',
'ROLE_AUTHOR' => 'Autor',
'ROLE_MODERATOR' => 'Moderator',
'ROLE_ADMIN' => 'Admin'
),
'label' => 'Rollen',
'required' => true
));