PHP/Symfony: 无法触发 FOSUserBundle 的事件

PHP/Symfony: Cannot trigger the event for FOSUserBundle

我在为 FOSUserBundle 订阅事件时遇到问题(我正在使用 this 教程)。

基本上,我试图在登录后将用户重定向到指定的路由。我做了一个class,和教程里的一样:

//src:src/AppBundle/EventsListener/LoginListener.php

namespace AppBundle\EventsListener;

use FOS\UserBundle\FOSUserEvents;
use FOS\UserBundle\Event\FilterUserResponseEvent;
use FOS\UserBundle\Event\FormEvent;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Symfony\Component\HttpFoundation\RedirectResponse;
use Symfony\Component\Routing\Generator\UrlGeneratorInterface;

class LoginListener implements EventSubscriberInterface
{
    private $router;

    public function __construct(UrlGeneratorInterface $router)
    {
        $this->router = $router;
    }

    /**
     * {@inheritDoc}
     */
    public static function getSubscribedEvents()
    {
        return array(
            FOSUserEvents::SECURITY_IMPLICIT_LOGIN => 'onSecurityImplicitLogin',
        );
    }

    public function onSecurityImplicitLogin(FormEvent $event)
    {
        return $this->redirectToRoute('profile');
    }
}

我的 services.yml 看起来像这样:

services:
    login_listener:
            class: AppBundle\EventsListener\LoginListener
            arguments: ['@router']
            tags:
             - { name: 'kernel.event_subscriber' }

但它仍然将我重定向到“\”路径。有人可以帮我找出问题所在吗?此外,这真的是在此包中定义路由的唯一方法吗?

而且,顺便问一下,除了这个 "official docs",还有其他 resources/manuals 吗?我发现这本手册非常不清楚和粗糙。

谢谢关心!

为了这个简单的目的,您只需添加 security.yml:

firewalls:
    main:
        form_login:
            always_use_default_target_path: true
            default_target_path: profile