Symfony — как получить Route name по Url?

Для получения имени маршрута (Route name) на основе URL можно использовать сервис router Symfony. router предоставляет удобные методы для работы с маршрутами и URL-адресами.

Первым шагом нужно получить экземпляр router из контейнера зависимостей (Dependency Injection Container):

use SymfonyComponentRoutingRouterInterface;

// ...

// Получаем экземпляр Router из контейнера.
$router = $container->get('router');

После того, как у вас есть экземпляр router, можно использовать его метод match() для сопоставления URL с конкретным маршрутом:

$url = '/example/url';

// Сопоставляем URL с маршрутом.
$route = $router->match($url);

Результатом выполнения метода match() будет массив с информацией о сопоставленном маршруте. В этом массиве будет присутствовать ключ 'route', который содержит имя маршрута:

$routeName = $route['_route'];

Теперь routeName будет содержать имя маршрута, соответствующего заданному URL.

Однако стоит учитывать, что метод match() вызывает расходы на производительность, поскольку он полностью проверяет конфигурацию маршрута. Если вы хотите получить имя маршрута без выполнения полной проверки, то можете воспользоваться методом getRouteCollection():

$collection = $router->getRouteCollection();
$route = $collection->get($url);
$routeName = $route->getName();

Теперь routeName будет содержать имя маршрута, соответствующего заданному URL, без дополнительных проверок.

Надеюсь, эта информация будет полезной для вас в работе с Symfony и получении имени маршрута по URL.