Symfony 3.4 - 如何将 Swiftmailer 传递给事件监听器?
Symfony 3.4 - how would one pass Swiftmailer into an event listener?
我正在使用 Stripe 构建电子商务应用程序。我目前有几个事件侦听器,当某些事情发生时(例如 Customer
、Product
或 SKU
正在创建或更新),它们通过它的 API 与 Stripe 通信。因为这些 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”吗?我应该在我的听众中使用什么命名空间?
按照上面的建议,我会使用自动装配。这将避免您必须向 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
确保在使用语句中包含上面的 类
我正在使用 Stripe 构建电子商务应用程序。我目前有几个事件侦听器,当某些事情发生时(例如 Customer
、Product
或 SKU
正在创建或更新),它们通过它的 API 与 Stripe 通信。因为这些 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”吗?我应该在我的听众中使用什么命名空间?
按照上面的建议,我会使用自动装配。这将避免您必须向 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
确保在使用语句中包含上面的 类