我想创建一个表单来编辑我的用户。
用户和角色与 ManyToMany 相关联。
在UserUsers实体中,我有一个$ roles变量ArrayCollection
:
public function __construct()
{
$this->roles = new ArrayCollection();
}
在我的表单上,我想通过多个select表单元素向我的用户添加角色。 在我的用户表单中:
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 ) );
}
现在我的多重选择为空。
如果我将map映射为true,我收到一条错误消息:
在...中无法将UserRoles转换为int
我尝试了很多方法,但我无法正确解决这个问题。
答案 0 :(得分:6)
对于实体的选择,您应该使用特殊选择字段类型“实体”(请参阅entity field type的Symfony手册)。有关示例,请参阅我对similar question的回答。 如果您收到更多错误,也可以在Role Interface and Manage Roles上找到此问题。
答案 1 :(得分:0)
对于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
));