Php 在向FOSUserBundle注册后,如何重定向到动态自定义路由
我已经找了一段时间了,但是找不到答案 预期行为:Php 在向FOSUserBundle注册后,如何重定向到动态自定义路由,php,symfony,fosuserbundle,Php,Symfony,Fosuserbundle,我已经找了一段时间了,但是找不到答案 预期行为: 用户进入产品页面 用户想要购买产品,因此需要登录/注册(使用模式) 用户没有帐户,所以他注册了 注册后(没有电子邮件确认),用户将登录并重定向到当前产品页面 用户可以继续结帐等 此行为在登录情况下有效,使用表单中的\u target\u path参数 但是,此参数不适用于注册。这有点烦人,我在哪里错过了什么?我正在考虑在注册成功事件上实现一个侦听器,但它看起来真的很奇怪,不像登录表单那么简单 编辑:找到了我的解决方案,请参见下面我自己的答案回
- 用户进入产品页面
- 用户想要购买产品,因此需要登录/注册(使用模式)
- 用户没有帐户,所以他注册了
- 注册后(没有电子邮件确认),用户将登录并重定向到当前产品页面
- 用户可以继续结帐等
\u target\u path
参数
但是,此参数不适用于注册。这有点烦人,我在哪里错过了什么?我正在考虑在注册成功事件上实现一个侦听器,但它看起来真的很奇怪,不像登录表单那么简单
编辑:找到了我的解决方案,请参见下面我自己的答案回答那些疑惑的人 TL;DR:注册过程不遵循登录的步骤 感谢@yceruto的评论 我在
注册成功
事件中做了一个快速的听众:
/**
* @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
这应该可以在
FOSUserEvents::REGISTRATION\u SUCCESS
上实现侦听器,并将响应更改为重定向到所需页面。登录表单使用框架会话功能保存当前路径,并在登录后自动重定向。注册控制器已退出此默认行为。好的,谢谢,我将发布我的侦听器,以供其他人了解。很高兴结束我的研究:)那是登录表单,不是注册表。啊,好的。看看这个: