Метод getPayload
Метод getPayload класса Request возвращает
ассоциативный массив данных, переданных в теле запроса.
Метод не принимает параметров и удобен для чтения
данных форматов JSON, form-urlencoded и других,
которые Symfony умеет разбирать автоматически.
Синтаксис
public function getPayload(): array
Пример
Давайте получим данные из тела POST-запроса
с типом содержимого application/json:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$res = $request->getPayload()->all();
return new Response(json_encode($res));
}
}
?>
Результат выполнения кода для тела запроса
{"name":"abcde","text":"article"}:
{"name":"abcde","text":"article"}
Пример
Давайте получим одно конкретное значение из тела запроса по ключу:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$name = $request->getPayload()->get('name');
return new Response($name);
}
}
?>
Результат выполнения кода для тела запроса
{"name":"abcde","text":"article"}:
"abcde"
Пример
Давайте проверим наличие ключа в теле запроса перед его чтением:
<?php
namespace AppController;
use SymfonyBundleFrameworkBundleControllerAbstractController;
use SymfonyComponentHttpFoundationRequest;
use SymfonyComponentHttpFoundationResponse;
use SymfonyComponentRoutingAttributeRoute;
class ArticleController extends AbstractController
{
#[Route('/article', name: 'article_index')]
public function index(Request $request): Response
{
$payload = $request->getPayload();
if ($payload->has('text')) {
$res = $payload->get('text');
} else {
$res = 'hello';
}
return new Response($res);
}
}
?>
Результат выполнения кода для тела запроса
{"name":"abcde"}:
"hello"
Смотрите также
-
класс
Request,
который представляет HTTP-запрос -
метод
get,
который возвращает параметр из запроса -
метод
getContent,
который возвращает тело запроса строкой -
метод
toArray,
который возвращает параметры запроса массивом