我有一点问题,我试图发送一个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);
我不知道我做错了什么!
答案 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)
我发现了问题,问题是一些保存数据库信息的变量被设置为受保护而不是公开。