2012-12-28 2 views
0

Doctrine2와 함께 Symfony2를 사용하고 있습니다. 사실 반환 예상대로 username이 데이터베이스에 존재하는 경우 또는Doctrine2 FindOneBy 함수가 빈 배열을 반환합니다.

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이 테이블에 존재하는지 알 필요가, 그래서 나는 AJAX하여이 메서드를 호출하고있어 그렇지 않은 경우는 false 그러나 기존 사용자 ($usuario)에서 사용자 데이터를 반환하면 항상 예상되는 객체가 아닌 빈 JSON 배열 ({})을 반환합니다. 어떤 아이디어? 응답을 보내기 전에 에 대한 올바른 필드와 값을 모두 출력합니다.

답변

0

실제로 사용자의 모든 속성은 비공개입니다. 그러나 json_encode는 공용 객체 속성 만 인코딩합니다.

JsonSerializable을 구현할 수 있습니다. 자세한 내용을 참조하십시오 here 또는 공공 (더 나쁜 솔루션)에 이러한 속성을 설정

희망이 도움이됩니다.

+0

반환 된 객체 (예 : var_dump ($ usuario-> username))의 속성에 액세스하려고하면 해당 객체의 비공개 속성에 액세스 할 수 없다는 오류가 표시됩니다. 아마도 빈 배열을 보내는 이유 일 것입니다. console.dir AJAX 호출에서 JSON을 반환하면 항상 $ usuario에 {}이 출력됩니다. –

관련 문제