Я установил FOSUsrBundle. Как добавить роль от контроллера к пользователю?
Я пробовал это решение, но не работает:
$user = $this->container->get('security.context')->getToken()->getUser();
$user->addRole('ROLE_USER');
Я установил FOSUsrBundle. Как добавить роль от контроллера к пользователю?
Я пробовал это решение, но не работает:
$user = $this->container->get('security.context')->getToken()->getUser();
$user->addRole('ROLE_USER');
Просто добавьте поле выбора роли со списком ролей в форму userType.
$builder->add('roleList', 'choice', array(
'choices' => array(
'ROLE_ADMIN' => 'ROLE_ADMIN',
'ROLE_USER' => 'ROLE_USER',
),
'property_path' => false,
'multiple' => true,
))
И в контроллере просто добавьте этот код, чтобы добавить роль пользователю
$formData = $this->getRequest()->request->get($form->getName());
$roles = $formData['roleList'];
foreach($roles as $key => $value)
{
$user->addRole($value);
}
Я думаю, этого достаточно для назначения ролей в пользовательском интерфейсе.
roleList
в roles
, а FOSUserBundle
позаботится о добавлении ролей для вас, когда вы добавляете пользователя, то есть $userManager->updateUser($formData->getData())
. Это сработало для меня
- person Sylvan D Ash; 12.08.2015