在FOSUserBundle中添加角色

时间:2015-04-14 21:22:41

标签: symfony fosuserbundle

我觉得与发布此内容的论坛用户相同:

我实现了FOSUserBundle,我想添加到从表中获取的RegisrationFormType角色。当我这样的时候:

->add('roles', 'choice', array('label' => 'Rol', 'required' => true, 
                           'choices' => array( 'ROLE_ADMIN' => 'ADMINISTRADOR','ROLE_SUPERADMIN' => 'SUPERADMINISTRADOR', 
                                               'ROLE_USER' => 'USUARIO'), 'multiple' => true))

它有效!但是他们必须离开BD,我不能放置Entity字段,因为角色应该是一个数组,而不是一个对象。如何使用从表中获取的角色生成数组?在FosUSerbundle中你可以添加角色吗?

谢谢....

我写的是因为该用户没有回答。我按照[官方文档的步骤](https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md)并在FOSUserBundle的注册表中添加上述行,但我想从数据库中进行此操作。

然后我习惯创建这个组。创建了另外两个表,甚至现在加入了列表中的组或角色,但没有显示如何显示登录以注册新用户。

有人解决了吗?

1 个答案:

答案 0 :(得分:0)

所以你在表中有角色?您可以在表单类型中注入EntityManager并使用它来获取选项。

        ->add('roles', 'choice', array(
            'label' => 'Rol',
            'choices' => $this->getRoles(),
            'multiple' => true,
            'required' => true,
        ))

然后创建一个方法,以您需要的方式提供数据。

类似的东西:

public function getRoles()
{
    $roles = array();
    $er = $this->em->getRepository('AppBundle:Role');
    $results = $er->createQueryBuilder('r')
            // conditions here
            ->getQuery()
            ->getResult();

    // process the array?
    foreach ($results as $role) {
        $roles[$role->getId()] = $role->getLabel();
    }

    return $roles;
}