您好我在发送对请求的响应之前做了一个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>
每件事情都很好。但太好了!实际上,在我的Web浏览器的每个请求中,我的数据库表中都有两个条目(onKernelController方法似乎在每个请求上执行两次)。那么为什么要在每个请求上创建两个条目?
编辑:php bin / console debug:event-dispatcher | grep -i AppBundle 给我:
#1 AppBundle\EventListener\RequestListener::onKernelController() 0