在控制器内调用控制器

时间:2012-05-23 08:05:08

标签: symfony

为什么在控制器内部调用控制器时会出现以下错误?

  

致命错误:在非对象中调用成员函数get()   /home/web/project/symfony2/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php   第149行

在控制器中,我调用了一个扩展Controller的类:

class DemoController extends Controller
{
    public function indexAction()
    {
        $object = new \Acme\DemoBundle\Service\Object();
        $object->method();
    }
    // ...
}

课程是这样的:

# Acme/DemoBundle/Service/Object.php
class Object extends Controller
{
    public function method()
    {
        $em = $this->getDoctrine()->getEntityManager(); // the problem
        // ...
    }
}

当我使用$this来调用服务,教义或控制器中的其他内容时,发生了错误。否则,它会起作用。

我如何在这个课程中使用学说?

1 个答案:

答案 0 :(得分:4)

尝试

$object->setContainer($this->container);
在致电method()

之前

编辑: 基本上,让服务扩展Controller是一个坏主意,但如果真的需要这样做,请尝试添加此

your.service:
  class: Your\Class
  arguments: [...]
  calls:
    - [ setContainer, [@service_container] ]

在您的服务配置文件中(可能是service.yml