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

Метод getEnum класса InputBag

Метод getEnum класса InputBag возвращает значение параметра запроса, преобразованное в объект перечисления (enum). Первым параметром передаётся имя ключа, вторым - класс enum, в который нужно преобразовать значение. Третьим параметром можно передать значение по умолчанию, которое вернётся, если ключ отсутствует в запросе.

Метод удобен, когда параметр запроса должен принимать одно из заранее известных значений, описанных в виде enum. Если значение не соответствует ни одному варианту перечисления, будет выброшено исключение ValueError.

Синтаксис

public function getEnum(string $key, string $class, mixed $default = null): ?\UnitEnum

Пример

Давайте создадим перечисление Status и извлечём его значение из параметров запроса:

<?php namespace App\Enum; enum Status: string { case Active = 'active'; case Inactive = 'inactive'; case Pending = 'pending'; } ?>

Теперь получим значение параметра status в контроллере:

<?php namespace App\Controller; use App\Enum\Status; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(Request $request): Response { $status = $request->query->getEnum('status', Status::class); return new Response($status->value); } } ?>

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

"active"

Пример

Давайте передадим значение по умолчанию, если параметр отсутствует в запросе:

<?php namespace App\Controller; use App\Enum\Status; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(Request $request): Response { $status = $request->query->getEnum('status', Status::class, Status::Pending); return new Response($status->value); } } ?>

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

"pending"

Пример

Давайте получим enum из POST-параметров формы:

<?php namespace App\Controller; use App\Enum\Status; use Symfony\Bundle\FrameworkBundle\Controller\AbstractController; use Symfony\Component\HttpFoundation\Request; use Symfony\Component\HttpFoundation\Response; use Symfony\Component\Routing\Attribute\Route; class ArticleController extends AbstractController { #[Route('/article', name: 'article_index')] public function index(Request $request): Response { $status = $request->request->getEnum('status', Status::class); return new Response($status->value); } } ?>

Результат выполнения кода при отправке формы со значением status=inactive:

"inactive"

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

  • класс InputBag,
    который хранит параметры запроса
  • метод get,
    который возвращает значение параметра запроса
  • метод getInt,
    который возвращает целочисленное значение параметра
  • метод getBoolean,
    который возвращает булево значение параметра
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить