FosuserBundle检查如何覆盖注册重定向以及启用电子邮件确认的何处



1)fosuserbundle注册重定向到确认的bydefault

        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,以覆盖此行为。我想返回确认消息,而不是重定向。

filterUserserSponseEvent不允许设置响应,没有" setResponse"方法。

2)fosuserbundle的emailConfirmationListener也重定向到Checkemail Action

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

我也想覆盖这种行为。我可以通过使用相同的ID" fos_user.listener.email_confirnation"创建我的emailConfirmationListener服务来做到这一点,并这样做

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

,但是问题现在在配置下不起作用。无论以下配置如何,它总是发送确认电子邮件。

fos_user
   registration 
       confirmation
           enabled : false

我看不到EmailConfirmatimationlisterner中的任何代码,可以检查该配置是否已启用。它在哪里检查,为什么要覆盖侦听器停止配置工作?

对于您的第一个问题,设置自己的重定向响应应在FOSUserEvents::REGISTRATION_SUCCESS而不是FOSUserEvents::REGISTRATION_COMPLETED上完成。这就是为什么您从捆绑包粘贴的代码在创建自己的RedirectResponse之前是否设置了响应的原因。

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

最新更新