为什么在控制器内部调用控制器时会出现以下错误?
致命错误:在非对象中调用成员函数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
来调用服务,教义或控制器中的其他内容时,发生了错误。否则,它会起作用。
我如何在这个课程中使用学说?
答案 0 :(得分:4)
尝试
$object->setContainer($this->container);
在致电method()
之前
编辑:
基本上,让服务扩展Controller
是一个坏主意,但如果真的需要这样做,请尝试添加此
your.service:
class: Your\Class
arguments: [...]
calls:
- [ setContainer, [@service_container] ]
在您的服务配置文件中(可能是service.yml
)