Константа POSITIVE_INT класса Requirement
Константа POSITIVE_INT класса Requirement содержит регулярное выражение,
которое разрешает только целые положительные числа: 1, 2, 3 и так далее.
Она используется в параметре requirements атрибута Route,
чтобы ограничить значение динамического сегмента URL.
Если адрес не соответствует шаблону, Symfony вернёт ошибку 404.
Синтаксис
#[Route('/path/{id}', requirements: ['id' => Requirement::POSITIVE_INT])]
Пример
Давайте создадим маршрут, который принимает только положительные целые числа в параметре id:
<?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\Requirement\Requirement;
class ArticleController extends AbstractController
{
#[Route('/article/{id}', name: 'article_show', requirements: ['id' => Requirement::POSITIVE_INT])]
public function show(int $id): Response
{
return new Response('article ' . $id);
}
}
?>
Результат выполнения кода для адреса /article/5:
"article 5"
Результат выполнения кода для адреса /article/0:
"404 Not Found"
Пример
Давайте проверим, что отрицательное число не пройдёт валидацию:
<?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\Requirement\Requirement;
class ArticleController extends AbstractController
{
#[Route('/user/{id}', name: 'user_show', requirements: ['id' => Requirement::POSITIVE_INT])]
public function user(int $id): Response
{
return new Response('user ' . $id);
}
}
?>
Результат выполнения кода для адреса /user/-1:
"404 Not Found"
Смотрите также
-
класс
Requirement,
который содержит набор готовых регулярных выражений -
параметр
requirements,
который задаёт ограничения для параметров маршрута -
константа
DIGITS,
которая пропускает только цифры -
атрибут
Route,
который вешает метод контроллера на указанный URL