首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在控制器内调用控制器

在控制器内调用控制器
EN

Stack Overflow用户
提问于 2012-05-23 08:05:07
回答 1查看 6.4K关注 0票数 2

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

/home/web/project/symfony2/vendor/symfony/src/Symfony/Bundle/FrameworkBundle/Controller/Controller.php中的

致命错误:在第149行调用非对象上的成员函数get()

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

代码语言:javascript
复制
class DemoController extends Controller
{
    public function indexAction()
    {
        $object = new \Acme\DemoBundle\Service\Object();
        $object->method();
    }
    // ...
}

这门课是这样的:

代码语言:javascript
复制
# Acme/DemoBundle/Service/Object.php
class Object extends Controller
{
    public function method()
    {
        $em = $this->getDoctrine()->getEntityManager(); // the problem
        // ...
    }
}

当我使用$this调用服务、理论或控制器中的其他东西时,就会发生错误。否则,它就奏效了。

例如,我怎样才能在这门课中使用教义?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-23 09:45:01

试一试

代码语言:javascript
复制
$object->setContainer($this->container);

在打电话给method()之前

编辑:基本上,让一个服务扩展Controller是个坏主意,但是如果您确实需要这样做,那么尝试添加以下内容

代码语言:javascript
复制
your.service:
  class: Your\Class
  arguments: [...]
  calls:
    - [ setContainer, [@service_container] ]

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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10715849

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档