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

Метод json

Метод json класса AbstractController формирует объект JsonResponse из переданных данных. Первым параметром передаются данные для сериализации в JSON. Вторым параметром можно указать HTTP-статус ответа. Третьим - массив заголовков. Четвёртым - контекст сериализации. Метод удобен, когда нужно вернуть JSON без ручного создания JsonResponse.

Синтаксис

$this->json(data, status: 200, headers: [], context: [])

Пример

Давайте вернём простой массив в формате JSON:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationJsonResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/json', name: 'article_json')] public function json(): JsonResponse { return $this->json(['a', 'b', 'c', 'd', 'e']); } } ?>

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

["a","b","c","d","e"]

Пример

Давайте вернём ассоциативный массив с данными статьи:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationJsonResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/show', name: 'article_show')] public function show(): JsonResponse { return $this->json([ 'id' => 1, 'name' => 'abcde', 'text' => 'article', 'active' => true, ]); } } ?>

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

{"id":1,"name":"abcde","text":"article","active":true}

Пример

Давайте укажем HTTP-статус ответа вторым параметром:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationJsonResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/created', name: 'article_created')] public function created(): JsonResponse { return $this->json(['status' => 'hello'], 201); } } ?>

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

{"status":"hello"}

Пример

Давайте добавим собственный заголовок к ответу:

<?php namespace AppController; use SymfonyBundleFrameworkBundleControllerAbstractController; use SymfonyComponentHttpFoundationJsonResponse; use SymfonyComponentRoutingAttributeRoute; class ArticleController extends AbstractController { #[Route('/article/header', name: 'article_header')] public function header(): JsonResponse { return $this->json( ['user' => 'abcde'], 200, ['X-Custom' => 'hello'] ); } } ?>

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

{"user":"abcde"}

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

  • класс AbstractController,
    который предоставляет базовые методы контроллера
  • метод render,
    который рендерит Twig-шаблон
  • метод redirectToRoute,
    который выполняет редирект на маршрут
  • метод file,
    который возвращает файл в ответе
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить