您好,在发送对请求的响应之前,我做了一个 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:event-dispatcher| grep -i AppBundle 给我:
#1 AppBundle\EventListener\RequestListener::onKernelController() 0