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

Класс Router

Класс Router является центральным компонентом маршрутизации в Symfony. Он позволяет сопоставить входящий URL с определённым маршрутом и сгенерировать URL по имени маршрута и параметрам. Основные методы: match для поиска маршрута по URL и generate для создания ссылки. Класс реализует интерфейс RequestContextAwareInterface и использует RouteCollection для хранения маршрутов.

Синтаксис

use Symfony\Component\Routing\Router; $router = new Router($loader, $resource, $options);

Параметры конструктора:

  • $loader - загрузчик маршрутов (например, YamlFileLoader);
  • $resource - путь к файлу с маршрутами;
  • $options - массив опций (кэш, отладка и т.д.).

Пример

Давайте получим сервис router из контейнера и сгенерируем URL по имени маршрута 'article_index':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\Generator\UrlGeneratorInterface; use Symfony\Component\Routing\RouterInterface; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(RouterInterface $router): Response { $url = $router->generate('article_index'); return new Response($url); } } ?>

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

"/article"

Пример

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

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; use Symfony\Component\Routing\RouterInterface; class UserController extends AbstractController { #[Route('/user/{name}', name: 'user_show')] public function show(string $name): Response { return new Response('User: ' . $name); } #[Route('/match-test', name: 'match_test')] public function matchTest(RouterInterface $router): Response { $params = $router->match('/user/abcde'); return new Response(json_encode($params)); } } ?>

Результат выполнения кода для адреса /match-test:

{"_route": "user_show", "name": "abcde"}

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

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