注册 FOSUserBundle 后如何重定向到动态自定义路由

How do I redirect to a dynamic custom route after register with FOSUserBundle

我为此找了一段时间,但找不到答案。

预期行为:

此行为在登录的情况下有效,在表单中使用 _target_path 参数。

但是,该参数不适用于注册。这有点烦人,我在哪里遗漏了什么?我正在考虑在注册成功事件上实现一个监听器,但不像登录表​​单那样简单似乎真的很奇怪。

编辑:找到我的解决方案,请参阅下面我自己的答案

也为疑惑的人解答。

TL;DR : 注册过程不遵循登录的

感谢@yceruto 的评论。

我在 REGISTRATION_SUCCESS 事件中进行了快速监听:

/**
 * @param FormEvent $event
 */
public function redirectOnRegistration(FormEvent $event)
{
    $route = $event->getRequest()->headers->get('referer', $this->router->generate('homepage'));
    $response = new RedirectResponse($route);
    $event->setResponse($response);
}

(如果没有referer我就跳转到首页)

在您的安全设置中,您必须启用 referer:

firewalls:
    dev:
        pattern: ^/(_(profiler|wdt|console)|css|images|js)/
        security: false

    main:
        pattern: ^/any_pattern
        anonymous: ~
        form_login:
            login_path: any_pattern_login
            check_path: any_pattern_login
            use_referer: true
        logout: true
        access_denied_handler: app.security.access_denied_handler
        guard:
            authenticators:
                - app.api_authenticator
            provider: api_provider
        logout:
            path: any_pattern_logout
            invalidate_session: true