【发布时间】:2013-05-09 12:49:19
【问题描述】:
我想创建一个表单来编辑我的用户。
与 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
我尝试了很多方法,但我无法正确解决这个问题。
【问题讨论】:
-
你的 $roles ArrayCollection 中有什么类型?
-
$roles ArrayCollection 中的所有元素都是一个实体(UserRoles)。
-
对于实体的选择,您应该使用特殊的选择字段类型“实体”(symfony.com/doc/current/reference/forms/types/entity.html)。例如,请参阅我对类似问题的回答 - stackoverflow.com/questions/13519961/…
-
好的,我改变了这样的角色:
$builder->add( 'roles', 'entity', array( 'class' => 'AcmeUserBundle:UserRoles', 'multiple' => true, 'property' => 'name' ) );然后我收到一条错误消息:预期参数类型为 "Doctrine\Common\Collections\Collection", "array" given -
这很奇怪,因为 ArrayCollection 实现了 Doctrine\Common\Collections\Collection。是否有可能将角色()重新分配给其他地方的数组?或者说 ArrayCollection 没有解析到教义类?
标签: forms symfony entity arraycollection multipleselection