在FOSUserBundle中,我需要重写FOSUserBundle RegistrationController,因为我需要添加以下内容:
if($user->getType()=="Student") {
$user->addRole("ROLE_Student");
}
else {
$user->addRole("ROLE_TEACHER");
}当我将它添加到vendor--->...---->registrationcontroller中时,它可以工作。这就是为什么我需要覆盖注册控制器,但是怎么做呢?
发布于 2014-03-31 08:40:14
不要覆盖控制器。你应该使用事件系统!创建订阅FOSUserEvents::REGISTRATION_COMPLETE的事件处理程序,然后执行角色添加。
Documentation:
侦听器:
class RegistrationListener implements EventSubscriberInterface
{
public function __construct(/* ... */)
{
// ...
}
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::REGISTRATION_COMPLETE => 'addRole',
);
}
public function addRole(FilterUserResponseEvent $event)
{
$user = $event->getUser();
// Add the role here
// ...
}
}服务定义:
<service id="my_app.event.registration" class="MyApp\Event\RegistrationListener">
<tag name="kernel.event_subscriber" />
<!-- ... -->
</service>https://stackoverflow.com/questions/22756778
复制相似问题