2

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

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

在控制器中,我调用了一个扩展类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在控制器中调用服务、原则或其他类似的东西时,发生了错误。否则,它会起作用。

例如,我如何在此类中使用教义?

4

1 回答 1

4

尝试

$object->setContainer($this->container);

在你打电话之前method()

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

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

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

于 2012-05-23T09:45:01.483 回答