【问题标题】:Symfony User Roles not selected in user formSymfony 用户角色未在用户表单中选择
【发布时间】:2014-01-23 12:41:29
【问题描述】:

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

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

数据库如下所示:

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

【问题讨论】:

  • 您是否将User 对象链接到FormBuilder?像这样:createForm(new UserType(), $user);
  • 是的,在我的控制器中我有:$user = $userRepo->findOneById( $userId ); $form = $this->createForm(new UserType(), $user);

标签: php symfony user-roles


【解决方案1】:

您需要将您的角色字段定义为实体 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

【讨论】:

  • 谢谢,我也试过了,但还是没有预选角色。
【解决方案2】:

在 symfony4 中遇到了同样的问题,添加这个对我有用:

'choice_value' => function ($choice) {
    return $choice;
},

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-16
    • 2016-09-16
    • 2020-09-28
    • 2018-10-16
    • 2022-11-24
    • 2018-03-29
    • 2017-06-01
    相关资源
    最近更新 更多