我已经设置了一个简单的侦听器和服务来检查用户是否正在使用移动设备。我很乐意与您分享我的研究成果,以帮助那些不太了解这种方法的人。
我的目标是首先了解我的用户是否正在使用移动设备
然而,我仍然坚持如何操纵这个功能,我真的很难理解它是如何工作的。
这是我的代码
我的service.yml
中的
我创建了我的平均听众,以检查用户是否使用了移动设备 我是否应该在这里或在控制器中缺少任何行? 我看到symfony doc 谢谢template.loader:
class: ST\BackofficeBundle\EventListener\DeviceListener
tags:
- { name: kernel.event_listener, event: kernel.exception }
class DeviceListener
{
public function onKernelView(getResponseForExceptionEvent $event)
{
$event->getRequest()->getSession()->set('mobile', true);
$response = new Response();
$response->setContent($event);
$event->setResponse($response);
}
}
$_SERVER ($request->headers->get('User-Agent'))
中的这一行应该在我的代码中的哪个地方使用吗?
答案 0 :(得分:2)
如果您想根据User-Agent
修改回复,那么我会创建一个kernel.response
听众。
因此,在services.yml
声明类似
template.loader:
class: ST\BackofficeBundle\EventListener\DeviceListener
tags:
- { name: kernel.event_listener, event: kernel.response, method: onKernelResponse }
这样,您的侦听器将在发送响应之前被调用。当然,您可以根据需要修改您的回复:
public function onKernelResponse(FilterResponseEvent $event)
{
$response = $event->getResponse();
$request = $event->getRequest();
if ($request->headers->get('User-Agent') == 'whatever') {
$response->setContent('hello');
}
$event->setResponse($response);
}
有关内核事件的更多详细信息,请查看this page。