我创建了一个简单的用户/角色表单。表单正确显示用户的详细信息并显示所有可能的角色,但由于某种原因,它不会预先选择用户的当前角色。对于用户和角色之间的关系,我在用户实体类中有以下内容:
/**
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users", cascade={"persist","remove"})
* @ORM\JoinTable(name="user_role")
*/
protected $roles;
formtype类是使用:
构建的$builder->add('firstname')
->add('lastname')
->add('email')
->add('roles');
数据库看起来像这样:
任何提示/协助都将不胜感激。
答案 0 :(得分:3)
您需要将角色字段定义为实体
http://symfony.com/doc/current/reference/forms/types/entity.html
将此行->add('roles');
更改为:
->add('roles', 'entity', array(
'multiple' => true,
'expanded' => true,
'property' => 'name',
'class' => 'Your_Path\Entity\Roles',
));
它应该有用。
你可以尝试创建here提到的角色类型表单,然后执行类似这样的操作
$builder->add('roles', 'collection', array('type' => new RoleType()));
建议您阅读此this关于mapped
选项,将其他选项视为by_reference
答案 1 :(得分:0)
在symfony4中遇到了相同的问题,添加了这个技巧对我来说:
'choice_value' => function ($choice) {
return $choice;
},