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

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 に答える