Метод getRouteCollection
Метод getRouteCollection принадлежит классу Router и возвращает объект RouteCollection, содержащий все маршруты, зарегистрированные в приложении. Метод не принимает параметров. Каждый элемент коллекции - это объект Route, который хранит путь, имя, требования и другие настройки маршрута. Метод удобно использовать для отладки, аудита маршрутов или программного перебора всех адресов приложения.
Синтаксис
public function getRouteCollection(): RouteCollection
Пример
Давайте получим коллекцию маршрутов и выведем имена всех маршрутов через запятую:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingRouterInterface;
class RouteController extends AbstractController
{
public function list(RouterInterface $router): Response
{
$collection = $router->getRouteCollection();
$names = [];
foreach ($collection as $name => $route) {
$names[] = $name;
}
return new Response(implode(', ', $names));
}
}
?>
Результат выполнения кода:
"article_index, article_user, article_show"
Пример
Давайте получим конкретный маршрут по имени и выведем его путь:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingRouterInterface;
class RouteController extends AbstractController
{
public function show(RouterInterface $router): Response
{
$collection = $router->getRouteCollection();
$route = $collection->get('article_user');
if ($route === null) {
return new Response('route not found');
}
return new Response($route->getPath());
}
}
?>
Результат выполнения кода:
"/user/{name}"
Пример
Давайте переберём все маршруты и выведем для каждого путь и методы:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingRouterInterface;
class RouteController extends AbstractController
{
public function dump(RouterInterface $router): Response
{
$collection = $router->getRouteCollection();
$rows = [];
foreach ($collection as $name => $route) {
$rows[] = $name . ': ' . $route->getPath() . ' [' . implode('|', $route->getMethods()) . ']';
}
return new Response(implode("\n", $rows));
}
}
?>
Результат выполнения кода:
"article_index: / [GET]
article_user: /user/{name} [GET]
article_show: /article/{id} [GET]"