Forms symfony2使用arraycollection形成多选
我想创建一个表单来编辑我的用户。 与多个相关的用户和角色。 在UserUsers实体中,我有一个$roles变量,它是Forms symfony2使用arraycollection形成多选,forms,symfony,entity,arraycollection,multipleselection,Forms,Symfony,Entity,Arraycollection,Multipleselection,我想创建一个表单来编辑我的用户。 与多个相关的用户和角色。 在UserUsers实体中,我有一个$roles变量,它是ArrayCollection: public function __construct() { $this->roles = new ArrayCollection(); } 在我的表单上,我想通过多个select表单元素向我的用户添加角色。 在我的用户表单中: public function buildForm( FormBuilderInterface $b
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 ) );
}
现在我的多重选择是空的
如果将“映射”设置为true,则会收到一条错误消息:
无法在中将UserRoles转换为int
我已经尝试了很多方法,但是我不能正确地解决这个问题。对于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
));
要选择实体,应使用特殊选择字段类型“实体”(有关详细信息,请参阅Symfony手册)。有关示例,请参见我对a的回答。
如果您遇到进一步的错误,您可能会发现这个问题也很有帮助。您的$roles ArrayCollection中有什么类型?$roles ArrayCollection中的所有元素都是一个实体(UserRoles)。要选择实体,您应该使用特殊的选择字段类型“entity”()。例如,请参阅我对类似问题的回答-好的,我更改了如下角色:
$builder->add('roles','entity',array('class'=>'AcmeUserBundle:UserRoles','multiple'=>true',property'=>name')代码>然后我得到了一条错误消息:类型为“条令\公共\集合\集合”的预期参数,“数组”给定奇数,因为ArrayCollection实现条令\公共\集合\集合。是否可能将roles()重新分配给其他位置的数组?或者ArrayCollection没有解析为条令类?这很好,但我将角色存储在数据库中,当我打开用户进行编辑时,我希望选择分配给当前用户的角色。我已经理解并强烈建议使用FOSUserBundle,因为安全性。在那里,您可以为一个用户存储多个角色。这就是你想要的结局。