Symfony2:在新的Controller中使用renderView方法

时间:2015-10-03 21:39:10

标签: symfony twig

我有两个控制器:

class FirstController extends Controller
{
    /**
     * @Route("/first")
     */
    public function indexAction()
    {
        $second = new SecondController();
        $second->doit();
    }
}


class SecondController extends Controller
{
    public function doit()
    {
        $render = $this->renderView('::base.html.twig');
        //write $render to disk
    }
}

而不是“完成”写入我的屏幕,我收到错误: Error: Call to a member functuin get() on null

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您不应该自己实例化控制器。该框架应该为您做到这一点。如果您在controller1中,并希望controller2实际处理请求(可能会使用您的一些解释),则需要forward to it,如下所示:$this->forward('MyBundle:MyController:myaction)

此外,您应该在服务中使用doit方法。控制器应该保持瘦,并且只关心HTTP:

  • 他们收到了请求
  • 他们根据请求调用服务,此服务应该对HTTP一无所知,并且可以从命令以及控制器调用
  • 他们会根据服务回答的内容返回回复。