1

您好,在发送对请求的响应之前,我做了一个 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   
4

0 回答 0