我正在将Symfony2与Doctrine2一起使用。
我需要知道表格上是否存在username
,所以我正在通过Ajax来调用此方法...
public function existeUsername()
{
$req = $this->getRequest();
$user = $req->request->get('user');
$em = $this->getDoctrine()->getEntityManager();
$usuario = $em->getRepository('RECURSIVAUserBundle:Usuario')->findOneByUsername($user);
if ($usuario):
//user found
$response = new Response(json_encode(array('error' => true, 'usuario' => $usuario, 'user' => $user)));
$response->headers->set('Content-Type', 'application/json');
return $response;
else:
//did not found the user
$response = new Response(json_encode(array('error' => false, 'user' => $user)));
$response->headers->set('Content-Type', 'application/json');
return $response;
endif;
}
如果username
存在于数据库中或错误(如果不是)中,则该方法会按预期返回为true。但是,从现有用户($usuario)
返回用户数据时,它总是返回一个空的JSON数组({}),而不是预期的对象。有什么想法吗?
如果我 var_dump($usuario
)在返回响应之前,它将打印出该 username
的所有正确字段和值。
的确,用户的所有属性都是私人的。但是JSON_ENCODE,仅编码公共对象属性。
您可以实现Jsonserializable。在此处查看更多详细信息或将这些属性设置为公共(更糟糕的解决方案)
希望这会有所帮助。