Функция getDoctrine не будет работать в одной конкретной функции контроллера - PullRequest
0 голосов
/ 22 февраля 2019

РЕДАКТИРОВАТЬ: теперь пытаюсь использовать EventSubscriber, как советовал мне b.enoit.be.Но когда я отправляю почту, ничего не происходит.Я не получаю никакой ошибки, но почта не сохраняется в моей базе данных.И я проверил Что я сделал не так?

SentMailsListener.php:

<?php

namespace Fidelise\SignUpBundle\EventListener;

use Symfony\Component\EventDispatcher\EventSubscriberInterface;
use Fidelise\SignUpBundle\Entity\EmailsHistory;
use Swift_Events_SendEvent;

class SentMailsListener implements EventSubscriberInterface
{

    public static function getSubscribedEvents()
    {
        return [Swift_Events_SendEvent::RESULT_SUCCESS => 'onMailSent'];
    }

    public function onMailSent(Swift_Events_SendEvent $event)
    {
        $em = $this->getDoctrine()->getManager();
        $message = $event->getMessage();
        $email = new EmailsHistory();
        $email->setRecipient(key($message->getTo()));
        $email->setSubject($message->getSubject());
        $email->setBody($message->getBody());
        $email->setSender(key($message->getFrom()));
        $em->persist($email);
        $em->flush();
    }
}

services.yml:

services:
    mail_sent_subscriber:
        class: Fidelise\SignUpBundle\EventListener\SentMailsListener
        tags:
            - { name: kernel.event_subscriber }

1 Ответ

0 голосов
/ 22 февраля 2019

Убедитесь, что ваш драйвер простирается от AbstractController.В любом случае, без большего количества кода трудно дать вам конкретный ответ.

...