【问题标题】:Symfony2 error when injecting Donctrine in controller在控制器中注入 Donctrine 时出现 Symfony2 错误
【发布时间】:2015-10-23 06:12:38
【问题描述】:

我正在尝试在控制器中注入教义:

这是我的服务:

services:
    default_controller:
        class:     Catalog\WebBundle\Controller\DefaultController
        arguments: [@doctrine.orm.entity_manager]

控制器:

public function __construct(EntityManager $em)
{
}

CRITICAL - 未捕获的 PHP 异常 ErrorException:“可捕获的致命错误:传递给 Catalog\WebBundle\Controller\DefaultController::__construct() 的参数 1 必须是 Doctrine\ORM\EntityManager 的实例,没有给出,调用/home/katalogas/domains/example.com/public_html/app/cache/dev/classes.php 在第 2783 行并在 /home/katalogas/domains/example.com/public_html/src/Catalog/WebBundle/Controller/DefaultController 中定义.php 第 23 行" 在 /home/katalogas/domains/example.com/public_html/src/Catalog/WebBundle/Controller/DefaultController.php 第 23 行 上下文:{"exception":"Object(ErrorException)"}

我确定我的 service.yml 已加载,因为当我输入错误时 - 出现解析错误。

【问题讨论】:

  • 我认为您已经在注入 EntityManager 的实例,因此 $this->em = $em 应该足够了
  • @np87 noo 问题不在这里,我可以删除那行。

标签: php symfony dependency-injection doctrine-orm


【解决方案1】:

您可能已经使用控制器表示法为您的 路由 设置了控制器,例如:SomeBundle:SomeController:SomeAction 您必须在路由中使用服务表示法。即:

# when defining your route in yml
...
{ _controller: default_controller:someAction ...}

【讨论】:

    【解决方案2】:

    我使用这个语法它可以工作。

        arguments:
            - @doctrine.orm.default_entity_manager
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      • 2016-12-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多