3

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

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

4

2 回答 2

6

对于实体的选择,您应该使用特殊的选择字段类型“实体”(参见 Symfony 手册中的实体字段类型)。例如,请参阅我对类似问题的回答。如果您遇到更多错误,您可能还会发现角色界面和管理角色上的这个问题很有帮助。

于 2013-05-10T08:42:21.890 回答
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
    ));
于 2013-05-09T13:24:14.097 回答