【发布时间】:2013-11-29 19:26:03
【问题描述】:
我正在尝试为每个成功注册的用户分配一个ROLE_USER 角色。我是 FOSUserBundle 的新手,所以从我在文档中阅读的内容来看,它是通过将逻辑插入控制器来完成的。
这是我的NewUserGroupSet 事件监听器:
<?php
namespace Tsk\TstBundle\EventListener;
use Doctrine\ODM\MongoDB\DocumentManager;
use FOS\UserBundle\Doctrine\UserManager;
use FOS\UserBundle\Event\FilterUserResponseEvent;
use FOS\UserBundle\FOSUserEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class NewUserGroupSet implements EventSubscriberInterface
{
protected $um;
protected $dm;
public function __construct(UserManager $um, DocumentManager $dm)
{
$this->um = $um;
$this->dm = $dm;
}
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_COMPLETED => "onRegistrationSuccess",
);
}
public function onRegistrationSuccess(FilterUserResponseEvent $event)
{
$user = $event->getUser();
$user->setRoles(array('ROLE_USER'));
$this->um->updateUser($user);
$this->dm->flush();
}
}
?>
并注册为服务如下:
parameters:
tsk_user.group_set.class: Tsk\TstBundle\EventListener\NewUserGroupSet
services:
tsk_user.group_set:
class: %tsk_user.group_set.class%
arguments: [@fos_user.user_manager, @doctrine.odm.mongodb.document_manager]
tags:
- { name: kernel.event_subscriber }
但是当我注册一个新用户时,什么都没有发生。没有设置任何角色。
任何帮助将不胜感激。
【问题讨论】:
标签: php events symfony fosuserbundle