Symfony 2基本控制器 - 返回响应?

时间:2014-02-28 19:45:24

标签: php symfony

我正在学习Symfony 2,我遇到了问题:

我的代码是:

public function showListAction()
{
    $ar = $this->getDoctrine()
               ->getRepository('AcmeHelloBundle:ModGlobalAspectRatio')
               ->findAll();

    return $this->render('AcmeHelloBundle:Test:showList.html.php', array('recs' => $ar));
}

public function updateAction($id, $name)
{   
    $em = $this->getDoctrine()->getManager();

    $ar = $em->getRepository('AcmeHelloBundle:ModGlobalAspectRatio')->find($id);

    $ar->setName($name);
    $em->flush();

    $content = $this->forward('AcmeHelloBundle:Hello:showList');

    return new Response($content);
}

我在“更新”中运行我的第一个动作“showList”。

没有return new Response()我有错误:

The controller must return a response (null given). Did you forget to add a return statement somewhere in your controller?

我不明白为什么......它的小傻......

我的主要问题是:

为什么在使用return new Response之后我在页面顶部显示文字:

HTTP/1.0 200 OK Cache-Control: no-cache Date: Fri, 28 Feb 2014 19:42:48 GMT X-Debug-Token: f0ada0 X-Debug-Token-Link: /symfony2/web/app_dev.php/_profiler/f0ada0

我不需要这些奇怪的字符串..如何删除它?

谢谢!! :)

1 个答案:

答案 0 :(得分:1)

只需返回$content

即可
public function updateAction($id, $name)
{   
    //...

    $content = $this->forward('AcmeHelloBundle:Hello:showList');

    return $content;
}

修改

您的控制器操作应该返回Response个对象。当您在基本控制器中调用$this->forward();时,它会返回所需的Response,而您的控制器操作必须返回该{{1}}。