0

我想为我的项目创建 HelperController。我生成了一个带有教义的控制器:generate:controller,我需要在其中使用实体管理器。

我注入到 services.yml 但它给出了这样的错误:

Argument 1 passed to CampingBundle\Controller\HelperController::__construct() must be an instance of Doctrine\ORM\EntityManager, none given ...

我的控制器代码:

namespace CampingBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Doctrine\ORM\EntityManager;

class HelperController extends Controller
{
    protected $manager;

    public function __construct(EntityManager $manager)
    {
        $this->manager = $manager;
    }

我的 Services.yml :

services:
  camping.helper_controller:
      class: CampingBundle\Controller\HelperController
      arguments: ["@doctrine.orm.entity_manager"]

为什么它不起作用?我应该清除缓存或其他东西,还是定义有什么问题?

谢谢

4

2 回答 2

0

我将把我的两分钱留在这里,因为我遇到了同样的问题并通过添加tags服务来解决它。

something.validate.some_service:
  class: Path\To\Some\Validator
  arguments:
    - '@doctrine.orm.entity_manager'
  tags:
    - { name: validator.constraint_validator, alias: some_validator_alias }

Symfony 如何使用服务标签

于 2018-11-29T09:10:43.610 回答
0

尝试使用 EntityManagerInterface 并删除extends Controller。如果您需要 CAS(控制器即服务),请查看此链接。更改protected $manager;private $manager;

namespace CampingBundle\Controller;

use Doctrine\ORM\EntityManagerInterface;

class HelperController
{
    /**
     * @var EntityManagerInterface $entityManager
     */
    private $entityManager;

    /**
     * @param $entityManager
     */
    public function __construct(EntityManagerInterface $entityManager)
    {
        $this->entityManager = $entityManager;
    }
}
于 2018-02-11T13:28:18.783 回答