Symfony 3.4 - как передать Swiftmailer в прослушиватель событий? - PullRequest
0 голосов
/ 30 января 2019

Я создаю приложение для электронной коммерции с использованием Stripe.В настоящее время у меня есть несколько прослушивателей событий, которые общаются со Stripe через его API, когда происходят определенные события (например, 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 Ответ

0 голосов
/ 30 января 2019

Как предложено выше, я бы использовал автопроводку.Это избавит вас от необходимости добавлять код в ваш 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, который будет автоматически подключен из-за ввода текста в конструкторе.То же самое касается Session & Logger.Чтобы узнать, какой сервис вы ищете, вы можете выполнить следующее: bin/console debug:autowiring

Убедитесь, что вы включили классы выше в операторах использования

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...