gpt4 book ai didi

symfony - 在使用 FOSUserBundle 的用户注册期间添加默认角色

转载 作者:行者123 更新时间:2023-12-03 10:18:35 25 4
gpt4 key购买 nike

版本:Symfony 2.2

当用户在我的网站上注册时,我试图添加一个默认角色。我使用 FOSUserBundle,我看到当用户注册时,数据库中的角色字段为空。
我从这个巨大的包开始,它不是很容易理解。所以我阅读了所有文档,但我不知道该怎么做。

现在,我创建了一个事件来动态添加这个角色,但它不起作用(我没有错误,但我的数据库仍然是空的)我什至不知道这是做到这一点的好方法吗?

我的事件:

use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Event\FormEvent;
use Symfony\Component\DependencyInjection\Container;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\DependencyInjection\ContainerInterface;

class AddDefaultRoleListener implements EventSubscriberInterface {

private $container;

public function __construct(Container $container)
{
$this->container = $container;
}

/**
* {@inheritDoc}
*/
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_SUCCESS => 'onAddDefaultRoleSuccess',
);
}

public function onAddDefaultRoleSuccess(FormEvent $event)
{
$doctrine = $this->container->get('doctrine');
$em = $doctrine->getManager();

$user = $event->getForm()->getData();
$user->addRole('ROLE_USER');
//$user->setRoles(array('ROLE_USER'));

$em->persist($user);
}
}

如您所见,我创建了一个简单的事件,它监听 REGISTRATION_SUCCESS,但似乎没有任何效果。这是我第一次尝试使用事件和服务。所以如果有人有建议,我会接受:)

最佳答案

我所做的是覆盖实体构造函数:

这是我的 Entity/User.php 的一部分

public function __construct()
{
parent::__construct();
// your own logic
$this->roles = array('ROLE_USER');
}

这是懒惰的方法。如果您想要正确更好的方式,请参阅 @RayOnAir answer

关于symfony - 在使用 FOSUserBundle 的用户注册期间添加默认角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15993637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com