Symfony2 FOS 在控制器中分配角色
Symfony2 FOS assigning roles in the controller
我在我的项目中使用了 FOS bundle 和 SonataUserBundle。
当用户在表单中注册时,他选择了他的帐户类型。他是买家卖家还是两者兼而有之。根据所选的选择,他应该被分配到不同的角色。
这是表单域:
->add('type', 'choice', array(
'label' => 'form.label.type',
'required' => true,
'choices' => array(
'buy' => 'Client',
'sell' => 'Provider',
'both' => 'Both'
)
))
我覆盖了 registrationcontroller 并且在 confirmedAction 中我这样做了:
public function confirmedAction()
{
$user = $this->container->get('security.context')->getToken()->getUser();
$type = $user->container->getType();
$userManager = $this->container->get('fos_user.user_manager');
if($type == 'buy') {
$user->container->addRole('ROLE_USER');
$userManager->updateUser($user);
}
else if($type == 'sell') {
$user->container->addRole('ROLE_SONATA_PROVIDER');
$userManager->updateUser($user);
}
else {
$user->container->addRole('ROLE_SONATA_PROVIDER', 'ROLE_USER');
$userManager->updateUser($user);
}
}
然而,这并没有为我新创建的用户分配角色。我是不是做错了什么?
我认为 addRole 正在寻找一个数组,你可以试试:
...
addRole(array('ROLE_USER'));
...
addRole(array('ROLE_SONATA_PROVIDER'));
...
addRole(array('ROLE_SONATA_PROVIDER', 'ROLE_USER'));
...
问题是关于配置(config.yml)没有启用确认,
我在我的项目中使用了 FOS bundle 和 SonataUserBundle。 当用户在表单中注册时,他选择了他的帐户类型。他是买家卖家还是两者兼而有之。根据所选的选择,他应该被分配到不同的角色。
这是表单域:
->add('type', 'choice', array(
'label' => 'form.label.type',
'required' => true,
'choices' => array(
'buy' => 'Client',
'sell' => 'Provider',
'both' => 'Both'
)
))
我覆盖了 registrationcontroller 并且在 confirmedAction 中我这样做了:
public function confirmedAction()
{
$user = $this->container->get('security.context')->getToken()->getUser();
$type = $user->container->getType();
$userManager = $this->container->get('fos_user.user_manager');
if($type == 'buy') {
$user->container->addRole('ROLE_USER');
$userManager->updateUser($user);
}
else if($type == 'sell') {
$user->container->addRole('ROLE_SONATA_PROVIDER');
$userManager->updateUser($user);
}
else {
$user->container->addRole('ROLE_SONATA_PROVIDER', 'ROLE_USER');
$userManager->updateUser($user);
}
}
然而,这并没有为我新创建的用户分配角色。我是不是做错了什么?
我认为 addRole 正在寻找一个数组,你可以试试:
...
addRole(array('ROLE_USER'));
...
addRole(array('ROLE_SONATA_PROVIDER'));
...
addRole(array('ROLE_SONATA_PROVIDER', 'ROLE_USER'));
...
问题是关于配置(config.yml)没有启用确认,