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

Атрибут MapQueryString

Атрибут MapQueryString вешается на параметр метода контроллера и указывает Symfony, что этот параметр нужно заполнить данными из query-строки запроса. В качестве типа параметра выступает пользовательский класс (DTO), свойства которого соответствуют query-параметрам. Атрибут принимает необязательное имя name - имя query-параметра, внутри которого лежат данные. Если имя не указано, значения берутся из query-строки напрямую.

Синтаксис

#[MapQueryString(name: name)]

Пример

Давайте создадим DTO SearchQuery с полями term и page и примем данные из query-строки в методе контроллера:

<?php namespace AppDto; class SearchQuery { public string $term = ''; public int $page = 1; } ?>
<?php namespace AppController; use AppDtoSearchQuery; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentHttpKernelAttributeMapQueryString; class ArticleController extends AbstractController { public function search( #[MapQueryString] SearchQuery $query ): Response { return new Response($query->term . ':' . $query->page); } } ?>

Результат выполнения кода для адреса /search?term=abcde&page=2:

abcde:2

Пример

Давайте прочитаем DTO из вложенного query-параметра filter, указав имя в атрибуте:

<?php namespace AppDto; class FilterQuery { public string $term = ''; public bool $active = false; } ?>
<?php namespace AppController; use AppDtoFilterQuery; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationResponse; use SymfonyComponentHttpKernelAttributeMapQueryString; class ArticleController extends AbstractController { public function filter( #[MapQueryString(name: 'filter')] FilterQuery $query ): Response { return new Response($query->term . ':' . ($query->active ? '1' : '0')); } } ?>

Результат выполнения кода для адреса /filter?filter[term]=abcde&filter[active]=1:

abcde:1

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

  • атрибут MapQueryParameter,
    который привязывает отдельный query-параметр к аргументу
  • атрибут MapRequestPayload,
    который преобразует тело запроса в объект DTO
  • атрибут MapEntity,
    который загружает сущность по параметру маршрута
  • атрибут Cache,
    который кеширует результат выполнения контроллера
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить