Подтвердить что ты не робот

Symfony2: Получение маршрута в Слушателе загрузки страницы

Как я могу получить маршрут на странице загрузки даже слушателя?

У меня есть следующий код в 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

4b9b3361

Ответ 1

Все события ядра расширяют KernelEvent, что означает, что вы можете просто без проблем Request перейти через $event->getRequest().

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');
}

Если вы хотите получить простые атрибуты маршрута, просто отфильтруйте все элементы с префиксом "_".

Выбор правильного события для прослушивания зависит от вашего конкретного варианта использования.