Symfony3在自定义容器中使用Entity Manager



我想为我的项目创建HelperController。我生成一个具有学说的控制器:生成:控制器,并且需要在其中使用实体管理器。

我被驱动到services.yml,但它给出了这样的错误:

Argument 1 passed to CampingBundleControllerHelperController::__construct() must be an instance of DoctrineORMEntityManager, none given ...

我的控制器代码:

namespace CampingBundleController;
use SymfonyBundleFrameworkBundleControllerController;
use SensioBundleFrameworkExtraBundleConfigurationRoute;
use DoctrineORMEntityManager;
class HelperController extends Controller
{
    protected $manager;
    public function __construct(EntityManager $manager)
    {
        $this->manager = $manager;
    }

我的services.yml:

services:
  camping.helper_controller:
      class: CampingBundleControllerHelperController
      arguments: ["@doctrine.orm.entity_manager"]

为什么它不起作用?Shoudl我清除了缓存或其他内容,或者定义上有什么问题?

谢谢

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

namespace CampingBundleController;
use DoctrineORMEntityManagerInterface;
class HelperController
{
    /**
     * @var EntityManagerInterface $entityManager
     */
    private $entityManager;
    /**
     * @param $entityManager
     */
    public function __construct(EntityManagerInterface $entityManager)
    {
        $this->entityManager = $entityManager;
    }
}

我将在这里留下两分钱,因为我有同样的问题,并通过将tags添加到服务中。

something.validate.some_service:
  class: PathToSomeValidator
  arguments:
    - '@doctrine.orm.entity_manager'
  tags:
    - { name: validator.constraint_validator, alias: some_validator_alias }

如何使用Symfony的服务标签

最新更新