Symfony2 - 有没有办法挂钩事件进行用户确认?

时间:2012-09-03 22:46:31

标签: php events symfony fosuserbundle

我正在使用symfony2的FOS用户包,并希望在用户在/register/confirm/{token}确认注册时运行一些自定义代码来记录事件

但是,似乎没有确定用户确认的事件,所以我想知道在确认用户帐户时挂钩执行的最佳方法。

2 个答案:

答案 0 :(得分:2)

您可以覆盖RegistrationController(请参阅doc)以添加日志记录功能。

答案 1 :(得分:1)

如果您能够使用dev-master(2.0.*@dev),则可以使用FOSUserBundle中的新控制器事件。有关详细信息,请参阅github上的文档:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/controller_events.md

以下是确认事件的一个小例子。不要忘记定义上面链接中提到的服务。

<?php

namespace Acme\UserBundle\Security\Listener;
use FOS\UserBundle\Event\GetResponseUserEvent;
use FOS\UserBundle\FOSUserEvents;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;

class RegistrationListener implements EventSubscriberInterface
{
    public function __construct(/** inject services you need **/)
    {
        // assign services to private fields
    }

    public static function getSubscribedEvents()
    {
        return array(FOSUserEvents::REGISTRATION_CONFIRM => 'onRegistrationConfirm',);
    }

    /**
     * GetResponseUserEvent gives you access to the user object
     **/
    public function onRegistrationConfirm(GetResponseUserEvent $event)
    {
        // do your stuff
    }
}