Здравствуйте, я сделал EventListener, чтобы сделать что-то, прежде чем отправить ответ на запрос.
Так что это мой EventListener:
namespace AppBundle\EventListener;
use Symfony\Component\HttpKernel\Event\FilterControllerEvent;
use Symfony\Component\HttpFoundation\Session\Session;
use Doctrine\ORM\EntityManager;
class RequestListener {
private $em;
private $session;
public function __construct(EntityManager $em, Session $session) {
$this->em = $em;
$this->session = $session;
}
public function onKernelController(FilterControllerEvent $event) {
$repo=$this->em->getRepository("AppBundle:FlashMessage");
$repo->addFlashMessage("test","content");
}
}
И добавьте это к моим услугам:
</services>
<service id="app.request.listener" class="AppBundle\EventListener\RequestListener">
<argument type="service" id="doctrine.orm.entity_manager"/>
<argument type="service" id="session" />
<tag name="kernel.event_listener" event="kernel.controller" />
</service>
</services>
Все работает нормально. Но тоже хорошо! Фактически, при каждом запросе от моего веб-браузера в моей таблице базы данных делаются две записи (метод onKernelController, по-видимому, выполняется два раза при каждом запросе). Так почему две записи создаются на каждый запрос?
Редактировать: php bin / console debug: диспетчер событий | grep -i AppBundle
дай мне:
#1 AppBundle\EventListener\RequestListener::onKernelController() 0
Задача ещё не решена.
Других решений пока нет …