我正在使用事件监听器onKernelResponse
.
I used :
if (HttpKernelInterface::MASTER_REQUEST != $event->getRequestType()) {
return;
}
它有一个MASTER_REQUEST
我的行动有两次,之前有一次<!DOCTYPE html> <html> <head>
等等,另一个在布局结束后除外。
他是我的services.yml
:
history.listener:
class: VENDOR\MyBundle\Service\HistoryListener
arguments: [@doctrine.orm.entity_manager, @logger, @history]
tags:
- { name: kernel.event_listener, event: kernel.controller, method: onKernelController }
- { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }
我做错什么了吗?
终于找到了问题的根源:调试工具栏!
它实际上发送了一个ajax请求,意味着另一个MASTER_REQUEST
..
我的解决方案是使用控制器名称的白/黑列表来过滤控制器。
UPDATE:
这是我正在使用的代码(因此您可以根据需要轻松排除一些其他控制器)。
public function __construct()
{
$this->classesExcluded = array("Symfony\Bundle\WebProfilerBundle\Controller\ProfilerController");
}
public function onKernelController(FilterControllerEvent $event)
{
$controller = $event->getController();
if (!is_array($controller) || HttpKernelInterface::MASTER_REQUEST != $event->getRequestType() || in_array(get_class($controller[0]), $this->classesExcluded)) {
return;
}
// ...
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)