注册 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
我为此找了一段时间,但找不到答案。
预期行为:
- 用户进入产品页面
- 用户想要购买产品,因此他需要登录/注册(使用模式)
- 用户没有账户所以他注册了
- 注册后(没有电子邮件确认),用户登录并重定向到当前产品页面
- 用户可以继续结帐,等等...
此行为在登录的情况下有效,在表单中使用 _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