提问人:peace_love 提问时间:7/12/2018 更新时间:7/12/2018 访问量:839
如何使用json编码(Symfony 4)从mysql数据库获取数据?
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编码获取数据,因为我想使用服务器端处理数据表。所以我尝试使用序列化程序
$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);
但是我收到错误消息:
参数 2 传递给 Symfony\Bundle\FrameworkBundle\Controller\AbstractController::render() 必须是类型 数组,字符串给定,调用 /Users/work/project/src/Controller/ArticleController.php 在第 46 行 未捕获的 PHP 异常 Symfony\Component\Debug\Exception\FatalThrowableError:“参数 2 传递给 Symfony\Bundle\FrameworkBundle\Controller\AbstractController::render() 必须是类型 数组,字符串给定,调用 /Users/work/project/src/Controller/ArticleController.php 在第 46 行” 在 /用户/工作/项目/供应商/symfony/framework-bundle/控制器/ControllerTrait.php 219号线
答:
3赞
u_mulder
7/12/2018
#1
因此,对数组进行第二个参数:render
return $this->render('homepage.html.twig', ['json_content' => $jsonContent]);
在模板中:
{{ json_content }}
虽然我不知道你为什么使用模板,因为有一个方法可以返回单个 json:json()
return $this->json($articles); // without using serializer
评论
0赞
olidem
7/12/2018
您还可以使用 twig 函数来json_encode事情:{{ articles|json_encode }}
评论
return $this->render('homepage.twig.html', [$jsonContent]);