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

Метод match класса Router

Метод match класса Router принимает объект Request и возвращает массив с информацией о маршруте, который соответствует данному запросу. Первым параметром передаётся объект запроса. Если совпадение не найдено, метод выбрасывает исключение ResourceNotFoundException.

Синтаксис

$router->match(Request $request)

Пример

Давайте получим информацию о маршруте для адреса '/user/abcde':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/user/{name}', name: 'article_user')] public function user(string $name): Response { return new Response($name); } } ?>

Теперь получим данные маршрута через метод match:

<?php namespace App\Service; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\RouterInterface; class RouteMatcher { public function __construct( private RouterInterface $router, ) { } public function getRouteInfo(): array { $request = Request::create('/user/abcde'); $res = $this->router->match($request); return $res; } } ?>

Результат выполнения кода:

[ '_route' => 'article_user', 'name' => 'abcde', ]

Пример

Давайте обработаем ситуацию, когда маршрут не найден:

<?php namespace App\Service; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\Routing\Exception\ResourceNotFoundException; use Symfony\Component\Routing\RouterInterface; class RouteMatcher { public function __construct( private RouterInterface $router, ) { } public function getRouteInfo(): array { $request = Request::create('/unknown'); try { $res = $this->router->match($request); } catch (ResourceNotFoundException $e) { $res = ['error' => 'Route not found']; } return $res; } } ?>

Результат выполнения кода:

["error" => "Route not found"]

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

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