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