РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
155 of 1361 menu

Метод 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]"

Смотрите также

  • класс Router,
    который управляет маршрутизацией приложения
  • метод match,
    который находит маршрут по URL
  • метод generate,
    который генерирует URL по имени маршрута
  • атрибут Route,
    который вешает метод контроллера на указанный URL
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить