首页 > 解决方案 > Symfony Fosuserbundle 重新发送电子邮件

问题描述

我正在尝试创建一个链接,在 Symfony3 中注册后向用户重新发送确认令牌。

但是,我收到一条弃用消息,如下所示:

用户弃用:“fos_user.mailer”服务是私有的,从容器中获取它自 Symfony 3.2 以来已被弃用,并将在 4.0 中失败。您应该将服务公开,或者直接停止使用容器并改用依赖注入。

这是我的控制器:

public function resendActivationEmail($token, UserManagerInterface $userManager)
{
    $user = $userManager->findUserByConfirmationToken($token);
    if (is_null($user)) {return $this->redirectToRoute('fos_user_registration_register');}
    $mailer = $this->get('fos_user.mailer');
    $mailer->sendConfirmationEmailMessage($user);
    return $this->redirectToRoute('fos_user_registration_check_email');
}

我的服务.yml:

services:
    # default configuration for services in *this* file
    _defaults:
        autowire: truesubscribers, etc.
        autoconfigure: true
        public: false

我查看了文档,它说在 Symfony3.4 中,服务默认是私有的。我在我的应用程序中使用自动装配,那么我如何在fos_user.mailer没有任何弃用警告的情况下获得?

我尝试将 Fosuserbundle 服务设置为公共,但无济于事:

services.yml

    ....
    FOS\UserBundle:
            public: true

任何帮助表示赞赏!

标签: symfonyfosuserbundlesymfony-3.4

解决方案


利用$mailer = $this->container->get('fos_user.mailer');

代替$mailer = $this->get('fos_user.mailer');


推荐阅读