gpt4 book ai didi

php - 从 Symfony 中的 Controller 返回一个 JSON 数组

转载 作者:可可西里 更新时间:2023-10-31 22:05:57 25 4
gpt4 key购买 nike

我正在尝试从 Symfony 2 中的 Controller 返回 JSON 响应。例如,在 Spring MVC 中,我可以获得带有 @ResponseBody 注释的 JSON 响应。我想要得到一个 JSON 响应,不管它是 JSON 数组还是 Json 对象,然后在 View 中使用 javascript 对其进行操作。

我尝试下一个代码:

/**
* @Route(
* "/drop/getCategory/",
* name="getCategory"
* )
* @Method("GET")
*/
public function getAllCategoryAction() {
$categorias = $this->getDoctrine()
->getRepository('AppBundle:Categoria')
->findAll();

$response = new JsonResponse();
$response->setData($categorias);

$response->headers->set('Content-Type', 'application/json');
return $response;
}

但我在浏览器中得到 [{},{}] 作为响应。我也尝试使用 $response = new Response(json_encode($categorias));,但我得到了相同的结果。

最佳答案

我认为@darkangelo 的回答需要解释。

findAll() 方法返回一个对象集合。

$categorias = $this->getDoctrine()
->getRepository('AppBundle:Categoria')
->findAll();

要构建您的响应,您必须将实体的所有 getter 添加到您的响应中,例如:

$arrayCollection = array();

foreach($categorias as $item) {
$arrayCollection[] = array(
'id' => $item->getId(),
// ... Same for each property you want
);
}

return new JsonResponse($arrayCollection);

使用 QueryBuilder 允许您将结果作为包含所有属性的数组返回:

$em = $this->getDoctrine()->getManager();
$query = $em->createQuery(
'SELECT c
FROM AppBundle:Categoria c'
);
$categorias = $query->getArrayResult();

return new JsonResponse($categorias);

getArrayResult() 避免了对 getter 的需要。

关于php - 从 Symfony 中的 Controller 返回一个 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28141192/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com