Symfony DoctrineBundle未在基本控制器的应用程序中注册

Symfony DoctrineBundle未在基本控制器的应用程序中注册,symfony,doctrine,symfony-2.7,Symfony,Doctrine,Symfony 2.7,我正在从ProductController::\构造调用一个基方法 ProductController正在扩展BaseController BaseController正在扩展控制器 贝娄线也在BaseController中 在执行$this->getDoctrine时,它向我显示 错误:对成员函数的调用为空-DoctrineBundle未在应用程序中注册 这可以在下图中看到 我正在使用Symfony 2.7 Symfony的基本控制器类实现ContainerWareInterface接口,该接

我正在从ProductController::\构造调用一个基方法

ProductController正在扩展BaseController

BaseController正在扩展控制器

贝娄线也在BaseController中

在执行$this->getDoctrine时,它向我显示

错误:对成员函数的调用为空-DoctrineBundle未在应用程序中注册

这可以在下图中看到

我正在使用Symfony 2.7


Symfony的基本控制器类实现ContainerWareInterface接口,该接口具有方法setContainer。当您通过Symfony以常规方式使用此控制器时,它使用此接口分配引擎盖下的服务容器

手动创建控制器实例时,必须自己处理

因此,简而言之,您缺少使用setContainer方法设置的$container字段。这就是为什么你会

对成员函数的调用具有空值


因为它尚未设置。

请添加您的app/config/config.yml文件@mcsky请帮助我,如何设置容器?在哪里设置?$controllerInstance->setContainer$container;-我不知道您是在什么上下文中创建控制器实例的,因此很难在细节上帮助您。一般来说,您需要一个服务容器的实例,并在创建之后立即将其传递给控制器的setContainer方法。但对我来说仍然不起作用。或者我不知道该怎么办。你可以分享显示$container初始化的示例代码吗。这可能会有帮助。请在创建控制器的位置共享代码。如果您使用的是整个Symfony框架,而不是基于Symfony组件创建自己的框架,那么它应该已经在其他地方了。无论如何,我不知道你为什么要手动创建控制器。我猜您之前做错了什么。您也可以在此处阅读有关创建容器的更多信息:但您可能不想手动创建容器。
use Symfony\Bundle\FrameworkBundle\Controller\Controller;