我觉得与发布此内容的论坛用户相同:
我实现了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的注册表中添加上述行,但我想从数据库中进行此操作。
然后我习惯创建这个组。创建了另外两个表,甚至现在加入了列表中的组或角色,但没有显示如何显示登录以注册新用户。
有人解决了吗?
答案 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;
}