如何在页面加载甚至监听器中获取路由?
我在services.yml中有以下代码:
page_load_listener: class: Acme\MainBundle\EventListener\PageLoadListener arguments: [@security.context,@session] tags: - { name: kernel.event_listener,event: kernel.controller,method: onKernelController,priority: 64 }
在PageLoadListener类中,我有相应的方法:
public function onKernelController(FilterControllerEvent $event) { // Some code I need to execute that needs the route arguments }
问题似乎是路由和参数不可用.我失踪了什么
我需要通过哪个事件来接收路由,这是参数?
谢谢,
JB
所有内核事件都会扩展为
原文链接:https://www.f2er.com/php/131130.htmlKernelEvent
,这意味着您可以通过$event-> getRequest()简单地访问Request对象.
public function onKernelController(FilterControllerEvent $event) { $request = $event->getRequest(); // Matched route $_route = $request->attributes->get('_route'); // Matched controller $_controller = $request->attributes->get('_controller'); // All route parameters including the `_controller` $params = $request->attributes->get('_route_params'); }
如果你想获得普通的路由属性,只需过滤所有以“_”为前缀的元素.
选择正确的事件来监听取决于具体的用例.