[英]Symfony2: Getting Route in Page Load Event Listener
如何在頁面加載甚至偵聽器中獲取路由?
我在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
所有內核事件都擴展了KernelEvent
,這意味着您可以簡單地通過$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');
}
如果您想獲取普通的路由屬性,只需過濾掉所有以“ _”為前綴的元素。
選擇適當的事件來偵聽取決於您的特定用例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.