Symfony сериализует и нормализует, делая JSON несовместимым

При попытке сделать функцию, которая сериализует объект, превратить его в json и отправить в виде ответа http, я получаю следующую ошибку:

ContextErrorException

Примечание времени выполнения: объявление AppBundle \ Controller \ DefaultController :: json () должно быть совместимо с Symfony \ Bundle \ FrameworkBundle \ Controller \ Controller :: json ($ data, $ status = 200, $ headers = Array, $ context = Array)

Я смог показать массив пользователей с помощью var_dump (); прежде чем я попытался сериализовать объект и использовать его в функции. Вот мой код:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;

class DefaultController extends Controller
{

public function indexAction(Request $request)
{
// replace this example code with whatever you need
return $this->render('default/index.html.twig', [
'base_dir'  =>realpath($this->getParameter('kernel.project_dir')).DIRECTORY_SEPARATOR,
]);
}public function pruebasAction(Request $request)
{
$em =  $this->getDoctrine()->getManager();
$users = $em->getRepository('BackendBundle:User')->findAll();

return $this->json($users);

}

public function json($data){
$normalizers = array(new ObjectNormalizer());
$encoders = array(new JsonEncoder());
$serializer = new Serializer($normalizers, $encoders);
$json = $serializer->serialize($data, 'json');

$response = new Response($json);
$response->headers->set('Content-Type', 'application/json');

return $response;

}
}

Что делает общедоступная функция json ($ data) {} «, чтобы портить программу?
и как мне сделать мой JSON совместимым с тем в рамках?

П.Д .: Будь терпеливым. Я новичок с рамками

-2

Решение

Я просто изменил название последней публичной функции (json для jsons), и она сработала, она дала мне читаемый вывод Json:

<?php

namespace AppBundle\Controller;

use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Serializer\Serializer;
use Symfony\Component\Serializer\Encoder\XmlEncoder;
use Symfony\Component\Serializer\Encoder\JsonEncoder;
use Symfony\Component\Serializer\Normalizer\ObjectNormalizer;

class DefaultController extends Controller
{

public function indexAction(Request $request)
{
// replace this example code with whatever you need
return $this->render('default/index.html.twig', [
'base_dir'   =>realpath($this->getParameter('kernel.project_dir')).DIRECTORY_SEPARATOR,
]);
}public function pruebasAction(Request $request)
{
$em =  $this->getDoctrine()->getManager();
$users = $em->getRepository('BackendBundle:User')->findAll();

return $this->jsons($users);

}

public function jsons($data){
$normalizers = array(new ObjectNormalizer());
$encoders = array(new JsonEncoder());
$serializer = new Serializer($normalizers, $encoders);
$json = $serializer->serialize($data, 'json');

$response = new Response($json);
$response->headers->set('Content-Type', 'application/json');

return $response;

}
}
-1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]