代码之家  ›  专栏  ›  技术社区  ›  Major Productions

Symfony 3.4-如何将Swiftmailer传递到事件侦听器?

  •  0
  • Major Productions  · 技术社区  · 7 年前

    我正在使用Stripe构建一个电子商务应用程序。我目前有几个事件监听器,当某些事情发生时(例如 Customer , Product SKU 正在创建或更新)。因为这些API调用可以产生几个 Exceptions ,在某些情况下,我想让应用程序给我发电子邮件。

    那么,我该如何配置我的 services.yml 把Swiftmailer传给我的听众?我当前的设置(单个示例,但它们或多或少都是这样):

    AppBundle\EventListener\UserHandler:
            arguments:
                $stripeKey: "%secret_stripe_key%"
                $session: "@session"
                $logger: "@monolog.logger"
            tags:
                - { name: doctrine.event_listener, event: prePersist }
                - { name: doctrine.event_listener, event: preUpdate }
    

    资源标签只是“@swiftmailer”吗?我应该在侦听器中使用什么名称空间?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Ciryk Popeye    7 年前

    如上所述,我将使用自动布线。这将使您不必向services.yml添加代码,从Symfony 3.3开始就是这样。

    在UserHandler的构造函数中:

    __construct(Swift_Mailer $mailer, SessionInterface $session, LoggerInterface $logger) {
      $this->mailer = $mailer;
      $this->logger = $logger;
      $this->session = $session;
    }
    

    因此,在函数中,您现在可以调用 $this->mailer bin/console debug:autowiring

    确保在use语句中包含上述类