src/EventListener/FeedbackSubscriber.php line 25

Open in your IDE?
  1. <?php
  2. namespace App\EventListener;
  3. use App\Entity\Main\Feedback;
  4. use Symfony\Component\DependencyInjection\ContainerInterface;
  5. use Symfony\Component\EventDispatcher\GenericEvent;
  6. use Twig\Environment;
  7. class FeedbackSubscriber
  8. {
  9.     protected $mailer;
  10.     
  11.     protected $container;
  12.     
  13.     protected $twig;
  14.     
  15.     public function __construct(\Swift_Mailer $mailerContainerInterface $containerEnvironment $twig)
  16.     {
  17.         $this->mailer $mailer;
  18.         $this->container $container;
  19.         $this->twig $twig;
  20.     }
  21.     
  22.     public function __invoke(GenericEvent $event)
  23.     {
  24.         $feedback $event->getSubject();
  25.         if($feedback instanceof Feedback){
  26.             
  27.             //Если статус активный
  28.             if($feedback->getActive() == 1){
  29.                 
  30.                 //Получаем данные настроек
  31.                 $setting $this->container->get('doctrine.orm.default_entity_manager')->getRepository('App\Entity\Main\Setting')->find(1);
  32.                 
  33.                 //Рендерим письмо
  34.                 $html $this->twig->render('email/feedback.html.twig', ['setting' => $setting'title' => $this->container->getParameter('feedback_subject'), 'message' => $feedback->getReply()]);
  35.     
  36.                 //Собираем письмо
  37.                 $message = (new \Swift_Message())
  38.                     ->setSubject($this->container->getParameter('feedback_subject'))
  39.                     ->setFrom([$this->container->getParameter('feedback_from') => $this->container->getParameter('feedback_from_name')])
  40.                     ->setTo( [ $feedback->getEmail() ] )
  41.                     ->setBody($html'text/html')
  42.                 ;
  43.     
  44.                 //Отправляем email пользователю
  45.                 $this->mailer->send($message);
  46.             
  47.             }
  48.         }
  49.     }
  50. }