Symfony - 不在我的实体监听器类中注入的依赖关系

时间:2017-11-17 01:24:44

标签: php symfony dependencies code-injection autowired

我的自动装配不适用于基本文件实体侦听器。

我有一个File实体类,它使用注释来指定监听器,如:

/**

@Orm\Entity(repositoryClass="root\CoreBundle\Repository\FileRepository")
@Orm\EntityListeners({"root\CoreBundle\EventListener\Entity\FileEntityListener"})
@Orm\Table(
etc...

FileEntityListener类的启动方式如下:

class FileEntityListener
{
private $encoderFactory;
private $logger;

public function __construct(FilesystemMap $filesystemMap, LoggerInterface $logger)
{
    $this->setFilesystemMap($filesystemMap);
    $this->logger = $logger;
}

当监听器启动时,依赖关系不会注入到监听器的构造函数中,我得到构造函数的错误,说:

Type error: Too few arguments to function Epcvip\CoreBundle\EventListener\Entity\FileEntityListener::__construct(), 0 passed in /var/www/html/accounting/vendor/doctrine/doctrine-bundle/Mapping/ContainerAwareEntityListenerResolver.php on line 83 and exactly 2 expected

捆绑包已自动装配,但依赖关系未被注入。

有谁知道为什么这不起作用?也许我错过了一个轻微的配置步骤?

1 个答案:

答案 0 :(得分:0)

您需要在services.yaml中标记您的实体侦听器:

services: root\CoreBundle\EventListener\Entity\FileEntityListener tags: - { name: doctrine.orm.entity_listener }