symfony2使用arraycollection形成多个select

时间:2013-05-09 12:49:19

标签: forms symfony entity arraycollection multipleselection

我想创建一个表单来编辑我的用户。 用户和角色与 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

我尝试了很多方法,但我无法正确解决这个问题。

2 个答案:

答案 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
    ));