Атрибут MapQueryParameter
Атрибут MapQueryParameter вешается на аргумент
метода контроллера и позволяет автоматически
извлекать значения из query-строки запроса.
Первым параметром передаётся имя query-параметра,
который нужно получить. Если имя не указано,
используется имя аргумента метода.
Синтаксис
#[MapQueryParameter(name: 'param_name')]
Пример
Давайте получим параметр page из query-строки:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Attribute\MapQueryParameter;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(
#[MapQueryParameter] int $page = 1
): Response
{
return new Response('Page: ' . $page);
}
}
?>
Результат выполнения кода для адреса /article?page=5:
Page: 5
Пример
Давайте явно укажем имя query-параметра sort
для аргумента order:
<?php
namespace App\Controller;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpKernel\Attribute\MapQueryParameter;
use Symfony\Component\Routing\Attribute\Route;
class ArticleController extends AbstractController
{
#[Route('/article/list', name: 'article_list')]
public function list(
#[MapQueryParameter(name: 'sort')] string $order = 'asc'
): Response
{
return new Response('Order: ' . $order);
}
}
?>
Результат выполнения кода для адреса /article/list?sort=desc:
Order: desc
Смотрите также
-
атрибут
MapQueryString,
который связывает query-строку с DTO-объектом -
атрибут
MapRequestPayload,
который связывает тело запроса с DTO-объектом -
атрибут
MapEntity,
который автоматически загружает сущность из базы данных -
атрибут
MapUploadedFile,
который связывает загруженный файл с аргументом