簡體   English   中英

Symfony2:在頁面加載事件監聽器中獲取路由

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM