Как я могу получить маршрут в загрузке страницы даже слушателем?
У меня есть следующий код в 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
, что означает, что вы можете просто закрыть объект 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'); }
Если вы хотите получить простые атрибуты маршрута, просто отфильтруйте все элементы с префиксом «_».
Выбор подходящего события для прослушивания зависит от вашего конкретного варианта использования.