2011-12-04 19 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 rオブジェクト "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テンプレートを使用することですここで説明する。

関連する問題