2011-12-04 3 views
1

mongodb에서 json 응답을 받고 있지만 나뭇 가지 템플릿으로 가져올 수 없습니다. 누군가 그것을 설명하고 가장 좋은 설명을 보여줄 수 있습니까? 감사. 모든Symfony2 : JSON에서 Twig에 응답 하시겠습니까?

/** 
* @Route("/event/{id}", name="event_details_view") 
* @Template() 
*/ 
public function viewAction($id) 
{ 
    $event = $this->get('doctrine.odm.mongodb.document_manager') 
     ->getRepository('DungeonEventBundle:Event') 
     ->findById($id); 

    if (!$event) { 
     throw $this->createNotFoundException('Event .$id. was not found.'); 
    } 

    return new Response(json_encode($event)); 
} 

답변

1

첫째, 당신은 MongoDB의에서 JSON 응답을 받고되지 않습니다 - 당신이 Event 문서 객체를 얻고있다. 대신 응답을 반환하는 나뭇 가지에 전달하려는 경우에는 @Template 주석을 사용하고 있기 때문에, (배열을 반환 :.

return array('event' => $event); 

이 목적은 event로 템플릿에 액세스 할 수 있습니다를

+0

을 내가 조금 혼란 스러워요. 내가 해요 나뭇 가지 템플릿 배열로 이벤트 문서를 반환하는 경우 오류가 발생했습니다 :'Method "eventTitle"fo 개체 "Doctrine \ ODM \ MongoDB \ LoggableCursor"는 DungeonEventBundle : Event : view.html.twig at line 4'에 존재하지 않습니다. 여기서 뭐가 잘못 됐니? :/ – varg

+0

문제는'$ event'는 단일 문서가 아니라 문서 모음입니다. findById() 대신'find()'(또는'findOneById()')를 사용하십시오. –

0

herehere 설명 된대로 가장 좋은 방법은 Response(json_encode($data)) 대신,하는 base.json.twig 템플릿을 사용하는 것입니다 여기에 대해 설명합니다.