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

Класс Requirement

Класс Requirement используется внутри атрибута Route в параметре requirements. Он позволяет указать регулярное выражение, которому должно соответствовать значение параметра маршрута. Если значение не подходит под выражение, маршрут не срабатывает и Symfony возвращает ошибку 404. Класс также содержит готовые константы, такие как DIGITS, UUID, ASCII_SLUG и другие, чтобы не писать регулярные выражения вручную.

Синтаксис

#[Route(path, name: name, requirements: ['param' => Requirement::DIGITS])]

Пример

Давайте ограничим параметр id только цифрами:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyComponentRoutingRequirement; class ArticleController extends AbstractController { #[Route('/article/{id}', name: 'article_show', requirements: ['id' => Requirement::DIGITS])] public function show(int $id): Response { return new Response((string) $id); } } ?>

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

123

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

404 Not Found

Пример

Давайте ограничим параметр slug с помощью константы ASCII_SLUG:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; use SymfonyComponentRoutingRequirement; class ArticleController extends AbstractController { #[Route('/article/{slug}', name: 'article_slug', requirements: ['slug' => Requirement::ASCII_SLUG])] public function slug(string $slug): Response { return new Response($slug); } } ?>

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

abcde

Пример

Давайте зададим своё регулярное выражение вместо готовой константы:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/user/{name}', name: 'user_show', requirements: ['name' => '[a-z]+'])] public function user(string $name): Response { return new Response($name); } } ?>

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

abcde

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

404 Not Found

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

  • параметр requirements,
    который задаёт ограничения для параметров маршрута
  • константа DIGITS,
    которая разрешает только цифры
  • константа ASCII_SLUG,
    которая разрешает символы ASCII-слага
  • константа UUID,
    которая разрешает UUID-идентификаторы
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить