繁体   English   中英

如何覆盖确认注册重定向以及FOSUserBundle检查启用了电子邮件确认的位置?

[英]How to override confirm registration redirect and where email confirmation enabled is checked by FOSUserBundle?

1)FOSUserBundle注册默认重定向到ConfirmedAction

        if (null === $response = $event->getResponse()) {
            $url = $this->generateUrl('fos_user_registration_confirmed');
            $response = new RedirectResponse($url);
        }

        $dispatcher->dispatch(FOSUserEvents::REGISTRATION_COMPLETED, new FilterUserResponseEvent($user, $request, $response));

        return $response;

我想使用REST调用registerAction时覆盖此行为。 我想返回确认消息,而不是重定向。

FilterUserResponseEvent不允许设置响应,没有“ setResponse”方法。

2)FOSUserBundle的EmailConfirmationListener也重定向到checkEmail操作

    $url = $this->router->generate('fos_user_registration_check_email');
    $event->setResponse(new RedirectResponse($url));

我也想覆盖这个行为。 我可以通过创建具有相同ID“ fos_user.listener.email_confirmation”的EmailConfirmationListener服务并执行此操作

$response = new Response($this->translator->trans('registration.check_email', array(
                '%email%' => $user->getEmail()), 'FOSUserBundle'));
        $event->setResponse($response);

但是问题是现在下面的配置无法正常工作。 无论以下配置如何,它总是发送确认电子邮件。

fos_user
   registration 
       confirmation
           enabled : false

我在EmailConfirmationListerner中看不到任何代码来检查是否启用了此配置。 在哪里检查,为什么覆盖侦听器停止配置工作?

对于第一个问题,应该在FOSUserEvents::REGISTRATION_SUCCESS而不是FOSUserEvents::REGISTRATION_COMPLETED上设置自己的重定向响应。 这就是为什么您从分发包粘贴的代码在创建自己的RedirectResponse之前先检查是否设置了响应。

对于第二个问题,配置设置的行为是注册确认侦听器或跳过捆绑软件中的注册。 如果注册自己的侦听器,则必须在自己的侧面控制自己的侦听器的注册。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM