Константа ULID
Константа ULID класса Requirement содержит регулярное выражение для проверки того, что значение параметра маршрута является корректным ULID-идентификатором. ULID (Universally Unique Lexicographically Sortable Identifier) - это 26-символьный идентификатор, состоящий из цифр и заглавных букв латинского алфавита. Константу удобно использовать в параметре requirements атрибута Route, чтобы ограничить допустимые значения маршрута.
Синтаксис
Requirement::ULID
Пример
Давайте ограничим параметр id маршрута так, чтобы он принимал только ULID:
<?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::ULID])]
public function show(string $id): Response
{
return new Response($id);
}
}
?>
Результат выполнения кода для адреса /article/01ARZ3NDEKTSV4RRFFQ69G5FAV:
"01ARZ3NDEKTSV4RRFFQ69G5FAV"
Пример
Давайте убедимся, что при неверном ULID Symfony вернёт ошибку 404:
<?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::ULID])]
public function show(string $id): Response
{
return new Response($id);
}
}
?>
Результат выполнения кода для адреса /article/abcde:
"No route found for GET /article/abcde"
Смотрите также
-
класс
Requirement,
который содержит набор констант для требований маршрута -
константа
UUID,
которая задаёт требование для UUID-идентификатора -
параметр
requirements,
который задаёт требования для параметров маршрута -
атрибут
Route,
который вешает метод контроллера на указанный URL