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

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

Параметр condition атрибута Route задаёт дополнительное условие, которому должен соответствовать текущий запрос. Если условие не выполняется, Symfony пропускает данный маршрут и ищет следующий подходящий. Значением параметра является строка с выражением на языке ExpressionLanguage, например "context.getMethod() == 'GET'".

Синтаксис

#[Route(path, name: name, condition: condition)]

Пример

Давайте повесим метод контроллера на адрес '/user' и разрешим его только для запросов с заголовком 'X-Custom' равным 'abcde':

<?php namespace App\Controller; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class UserController extends AbstractController { #[Route('/user', name: 'user_index', condition: "request.headers.get('X-Custom') == 'abcde'")] public function index(): Response { return new Response('user'); } } ?>

Результат выполнения кода при наличии заголовка:

"user"

Если заголовок не передан, маршрут не совпадёт и Symfony вернёт ответ 404 Not Found.

Пример

Давайте ограничим маршрут только запросами с методом POST и параметром id больше 10:

<?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('/article/{id}', name: 'article_show', condition: "context.getMethod() == 'POST' and request.get('id') > 10")] public function show(int $id): Response { return new Response('article ' . $id); } } ?>

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

"article 15"

Для GET-запроса или при id равном 5 маршрут не сработает.

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

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