Symfony2学说和回应

时间:2014-08-16 08:12:35

标签: json symfony doctrine

我有一点问题,我试图发送一个json响应,但我得到的只是一个空对象。

所以这是我的代码:

//Get the data from DB
$template = $this->getDoctrine()
    ->getRepository('EVRYgroBundle:Template')
    ->findOneBy(
        array('active' => 1)
        );

    if (!$template) {
        throw $this->createNotFoundException(
            'No product found for id '
        );
    }

  //Send the response
 $response = new Response();
 $response->setContent(json_encode($template));
 return $response;

当我查看它时,它显示的是{} 我还尝试使用jsonResponse并使用此代码:

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

我不知道我做错了什么!

2 个答案:

答案 0 :(得分:1)

json_encode需要一个数组作为第一个参数。当你用一个对象调用它时,可能会显示公共属性。要保护属性(应该是这样),您可以向实体添加公开函数:

/**
 * delivers all properties and values of the entity easily
 *
 * @return array
 */
public function expose()
{
    return get_object_vars($this);
}

然后致电

$response->setData(json_encode($template->expose()));

这样你只需通过getter和setter方法访问就可以保持你的实体清洁,你可以通过json访问所有属性。

答案 1 :(得分:0)

我发现了问题,问题是一些保存数据库信息的变量被设置为受保护而不是公开。