如何提供包含一系列视图的json feed?

时间:2012-05-29 07:15:55

标签: symfony twig

我有一个项目的视图。当我在ProjectController中对方法 showProjects()进行Ajax调用时,我会得到一个json feed,其中包含每个项目的模板数组。

实际上,我尝试了,但是我得到一个包含请求对象的json feed,而不是模板。我不想为每个项目显示一个模板,因为我想在js中处理它们。

#ProjectController.php

public function showProjects() {
    $em = $this->getDoctrine()->getEntityManager();

    $projects = $em->getRepository('BtaskBoardBundle:Project')->findAll();
    if (!$projects) {
        throw new NotFoundHttpException();
    }

    $projects_template = array();
    foreach ($projects as $project) {
        $projects_template[] = $this->render('MyBundle::project.html.twig', array(
            'project' => $project,
            ));
    }

    return new Response(json_encode($projects_template), 200);
}

#project.html.twig

<a class="project" data-id="{{ project.id }}" href="#">{{ project.name }}</a>

怎么了?

提前致谢。

1 个答案:

答案 0 :(得分:1)

您获得的响应对象应该使用getContent()方法。有关详细信息,请查看documentation中的Symfony\Component\HttpFoundation\Response课程。你应该能够这样做:

foreach ($projects as $project) {
    $projects_template[] = $this->render('MyBundle::project.html.twig', array(
        'project' => $project,
        ))->getContent();
}