Doctrine Collection Json Response Issue

时间:2015-09-27 00:13:04

标签: jquery json ajax symfony doctrine-orm

所以,我和Ajax POST调用控制器中的一个函数来重新调整像这样的json响应:

    $images = $this->getEntityManager()->getRepository('AppBundle:Image')->findBy(array(),array(),5);
    $response = new JsonResponse();
    $response->setData(array(
        'images' => $images
    ));
    return $response;

我得到了五个元素,但是全部都是空的......如下图所示:

array

例如,我从数组中的元素返回一些属性并且它可以工作:

$images = $this->getEntityManager()->getRepository('AppBundle:Image')->findBy(array(),array(),5);
$response = new JsonResponse();
$response->setData(array(
   'images' => $images[0]->getSlug()
));

return $response;

success

这是简单的ajax代码:

$.ajax({
     method: 'POST',
     url: $("#scroll-down").attr("data-href"),
     success: function(response) {
          console.log(response);
     },
     error: function() {
          console.log(response);
     }
}).fail(function() {
     console.log(response);
});

1 个答案:

答案 0 :(得分:0)

在Symfony中JsonResponse主要是php函数的包装器json_encode

json_encode不会对私有对象属性进行编码。

<?php

class Test {
    private $a = null;
    public $b = 3;

    public function __construct($a) {
        $this->a = $a;
    }
}

$test = new Test(1);

echo json_encode($test);

这将输出{"b":3},因为$a是私有的

因此,您应该在问题上使用第二个表单或使用序列化程序包