如何使用 json 编码从 mysql 数据库获取数据(Symfony 4)?
How can I get data from mysql database with json encode (Symfony 4)?
现在我正在通过 Doctrine 从数据库中获取数据:
$articles = $this->getDoctrine()->getRepository(Article::class)->findAll();
return $this->render('homepage.html.twig', array('articles' => $articles));
这工作正常。但我需要的是通过 json 编码获取数据,因为我想使用服务器端处理数据表。所以我尝试使用 Serializer
$encoders = array(new XmlEncoder(), new JsonEncoder());
$normalizers = array(new ObjectNormalizer());
$serializer = new Serializer($normalizers, $encoders);
$articles = $this->getDoctrine()->getRepository(Article::class)->findAll();
$jsonContent = $serializer->serialize($articles, 'json');
return $this->render('homepage.html.twig', $jsonContent);
但我收到错误消息:
Argument 2 passed to
Symfony\Bundle\FrameworkBundle\Controller\AbstractController::render()
must be of the type array, string given, called in
/Users/work/project/src/Controller/ArticleController.php on line 46
Uncaught PHP Exception
Symfony\Component\Debug\Exception\FatalThrowableError: "Argument 2
passed to
Symfony\Bundle\FrameworkBundle\Controller\AbstractController::render()
must be of the type array, string given, called in
/Users/work/project/src/Controller/ArticleController.php on line 46"
at
/Users/work/project/vendor/symfony/framework-bundle/Controller/ControllerTrait.php
line 219
所以将 render
的第二个参数设为一个数组:
return $this->render('homepage.html.twig', ['json_content' => $jsonContent]);
在模板中:
{{ json_content }}
虽然我不知道你为什么要使用模板,因为有一个 json()
方法 returns single json:
return $this->json($articles); // without using serializer
现在我正在通过 Doctrine 从数据库中获取数据:
$articles = $this->getDoctrine()->getRepository(Article::class)->findAll();
return $this->render('homepage.html.twig', array('articles' => $articles));
这工作正常。但我需要的是通过 json 编码获取数据,因为我想使用服务器端处理数据表。所以我尝试使用 Serializer
$encoders = array(new XmlEncoder(), new JsonEncoder());
$normalizers = array(new ObjectNormalizer());
$serializer = new Serializer($normalizers, $encoders);
$articles = $this->getDoctrine()->getRepository(Article::class)->findAll();
$jsonContent = $serializer->serialize($articles, 'json');
return $this->render('homepage.html.twig', $jsonContent);
但我收到错误消息:
Argument 2 passed to Symfony\Bundle\FrameworkBundle\Controller\AbstractController::render() must be of the type array, string given, called in /Users/work/project/src/Controller/ArticleController.php on line 46 Uncaught PHP Exception Symfony\Component\Debug\Exception\FatalThrowableError: "Argument 2 passed to Symfony\Bundle\FrameworkBundle\Controller\AbstractController::render() must be of the type array, string given, called in /Users/work/project/src/Controller/ArticleController.php on line 46" at /Users/work/project/vendor/symfony/framework-bundle/Controller/ControllerTrait.php line 219
所以将 render
的第二个参数设为一个数组:
return $this->render('homepage.html.twig', ['json_content' => $jsonContent]);
在模板中:
{{ json_content }}
虽然我不知道你为什么要使用模板,因为有一个 json()
方法 returns single json:
return $this->json($articles); // without using serializer