Как найти текущий шаблон маршрута в Symfony 3.4? - PullRequest
0 голосов
/ 01 мая 2018

Как и в security.yml - { path: ^/login, role: IS_AUTHENTICATED_ANONYMOUSLY } Я хочу выполнить код в EventListener, когда шаблон маршрута отличается от /admin

1 Ответ

0 голосов
/ 01 мая 2018

Если вы слушаете событие Symfony Kernel, вы сможете получить текущий запрос из события, вызвав getRequest() для этого события. Возможно, вам придется проверить, является ли это текущий запрос, то есть вы не имеете дело с подзапросом, но я опущу это здесь.

Как только у вас есть запрос, проверка, соответствует ли маршрут шаблону или не захвачен шаблоном, так же просто, как выполнить preg_match(), или в более простых случаях просто сравнение строк, например:

if (strpos($request->getPathInfo(), '/admin/') === 0) {
    return
}

// Do your thing

Это пропустит событие, когда ваш маршрут начинается с /admin/, и выполнит все, что вы положили вместо комментария, если оно не соответствует этому шаблону администратора.

Если вы хотите проверить, соответствует ли определенное имя маршрута, вы также можете извлечь атрибут _route из запроса:

$routeName = $request->attributes->get('_route');

Затем вы можете проверить маршрутизатор для получения дополнительной информации об этом маршруте, например, с именами маршрутов, например, проверяя определенный префикс и делайте все, что хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...