簡體   English   中英

Symfony Fosuserbundle重新發送電子郵件

[英]Symfony Fosuserbundle resend email

我正在嘗試建立一個鏈接,該鏈接在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');
}

我的services.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

任何幫助表示贊賞!

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

而不是$mailer = $this->get('fos_user.mailer');

最好使用DependencyInjection而不是直接調用容器。 您應該將郵件傳遞給您的方法:

public function resendActivationEmail($token, UserManagerInterface $userManager, \FOS\UserBundle\Mailer\MailerInterface $mailer)
{
    $user = $userManager->findUserByConfirmationToken($token);
    if (is_null($user)) {return $this->redirectToRoute('fos_user_registration_register');}
    $mailer->sendConfirmationEmailMessage($user);
    return $this->redirectToRoute('fos_user_registration_check_email');
}

有關DependencyInjection的更多信息: https : //symfony.com/doc/3.4/service_container/injection_types.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM