未在用户表单中选择Symfony用户角色

时间:2014-01-06 06:37:28

标签: php symfony user-roles

我创建了一个简单的用户/角色表单。表单正确显示用户的详细信息并显示所有可能的角色,但由于某种原因,它不会预先选择用户的当前角色。对于用户和角色之间的关系,我在用户实体类中有以下内容:

/** 
* @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');

数据库看起来像这样: enter image description here

任何提示/协助都将不胜感激。

2 个答案:

答案 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;
},