【问题标题】:HWIOauthBundle & FOSUserBundle events not firingHWIOauthBundle 和 FOSUserBundle 事件未触发
【发布时间】:2013-08-28 16:23:16
【问题描述】:

我已遵循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 }

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

有没有人知道我在这里缺少什么才能参与这些事件?

【问题讨论】:

  • 您是否还有其他正在正确加载的服务?您的 services.yml 文件是否有可能没有被加载? app/console container:debug 是否显示您的服务?
  • 是的,服务正在加载,我可以在运行 container:debug 时看到它,但感谢提供额外的调试提示
  • 您发布的代码是您的真实代码还是您针对您的问题对其进行了编辑?我问是因为你的构造函数只显示一个参数。它应该抛出错误消息。你有error_reporting(E_ALL);某处?简单的拼写错误会给您带来错误吗?
  • 我确实为我的问题编辑了代码,因为尚未使用路由器,我已将其添加回
  • 好吧。就事件处理而言,我没有看到任何其他错误。也许在 onRegistrationInitialize 中添加一个 die 语句。记录器可能没有正确初始化,因此您的日志消息没有被持久化。

标签: php symfony fosuserbundle hwioauthbundle


【解决方案1】:

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

【讨论】:

  • 您是否找到任何可以监听的 HWI OAuth 事件?
  • 对不起,我找不到任何东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-25
相关资源
最近更新 更多