版本: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,但似乎没有任何效果。这是我第一次尝试使用事件和服务。所以如果有人有建议,我会接受的:)