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

Параметр host атрибута Route

Параметр host атрибута Route задаёт доменное имя, на котором доступен маршрут. Если запрос приходит с другого хоста, маршрут не будет сопоставлен. В значении можно использовать регулярные выражения и именованные плейсхолдеры, например {subdomain}. Это позволяет обслуживать разные поддомены одним контроллером.

Параметр передаётся именованным аргументом host в атрибут Route. Значение - строка с доменом.

Синтаксис

#[Route(path, name: name, host: 'example.com')]

Пример

Давайте ограничим маршрут доменом 'example.com':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/', name: 'article_index', host: 'example.com')] public function index(): Response { return new Response('hello'); } } ?>

Результат выполнения кода для адреса example.com/:

"hello"

Для адреса other.com/ маршрут не сработает и вернётся ошибка 404.

Пример

Давайте используем поддомен как плейсхолдер и примем его значение в контроллере:

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

Результат выполнения кода для адреса abcde.example.com/user:

"abcde"

Пример

Давайте ограничим плейсхолдер поддомена регулярным выражением через параметр requirements:

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

Результат выполнения кода для адреса user.example.com/user:

"user"

Для адреса guest.example.com/user маршрут не сработает.

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

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