首页 文章

HWIOauthBundle和FOSUserBundle事件未触发

提问于
浏览
0

我已经按照所有的建议here来设置带有FOSUserBundle的HWIOAuthBundle,但我希望能够访问用户注册时触发的事件,而且到目前为止似乎无法做到这一点 . 按照this question中的建议,这是我的事件订阅者(请注意,我对所有事件都不感兴趣,但我只想测试是否有任何事件被触发):

<?php
namespace Acme\ClientBundle\EventListener;

use FOS\UserBundle\Event\FilterUserResponseEvent;
use FOS\UserBundle\Event\FormEvent;
use FOS\UserBundle\Event\GetResponseUserEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Event\UserEvent;
use Symfony\Bridge\Monolog\Logger;

/**
 * RegistrationConfirmListener
 */
class RegistrationConfirmListener implements EventSubscriberInterface
{
    /**
     * @var Logger
     */
    private $logger;

    function __construct(UrlGeneratorInterface $router, Logger $logger)
    {
        $this->router = $router;
        $this->logger = $logger;
    }

    public static function getSubscribedEvents()
    {
        return array(
            FOSUserEvents::REGISTRATION_INITIALIZE => 'onRegistrationInit',
            FOSUserEvents::REGISTRATION_CONFIRM    => 'onRegistrationConfirm',
            FOSUserEvents::REGISTRATION_CONFIRMED  => 'onRegistrationConfirmed',
            FOSUserEvents::REGISTRATION_COMPLETED  => 'onRegistrationCompleted',
            FOSUserEvents::REGISTRATION_SUCCESS    => 'onRegistrationSuccess',
        );
    }

    public function onRegistrationInit(UserEvent $event)
    {
        $this->logger->info('Registration has started: ' . serialize($event));
    }

    public function onRegistrationConfirm(GetResponseUserEvent $event)
    {
        $this->logger->info("Registration is confirming: " . serialize($event));
    }

    public function onRegistrationConfirmed(FilterUserResponseEvent $event)
    {
        $this->logger->info("Registration has been confirmed: " . serialize($event));
    }

    public function onRegistrationCompleted(FilterUserResponseEvent $event)
    {
        $this->logger->info("Registration has been completed: " . serialize($event));
    }

    public function onRegistrationSuccess(FormEvent $event)
    {
        $this->logger->info("Registration has been successful: " . serialize($event));
    }
}

这是我的服务定义:

acme_user.registration_complete:
    class: Acme\ClientBundle\EventListener\RegistrationConfirmListener
    arguments: [ @router, @logger ]
    tags:
        - { name: kernel.event_subscriber }

但是,即使身份验证/注册成功,我也看不到任何记录的FOSUserEvent . 我觉得可能相关的唯一其他信息是我也将FOSUserBundle与SonataAdminBundle集成,这似乎也正常工作 . (好吧,正确一旦我弄清楚如何将FOSUserBundle升级到v2.0并修复了所需的更改 . )

有谁知道我在这里缺少什么能够挂钩这些事件?

1 回答

  • 3

    事实证明,HWIOAuthBundle不使用FOSUserBundle注册控制器,因此它永远不会触发这些事件 .

相关问题