Моя автопроводка не работает для слушателя основного файла.
У меня есть класс сущности 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
Пакет подключается автоматически, но зависимости не вводятся.
Кто-нибудь знает, почему это не работает? Может быть, небольшой шаг настройки мне не хватает?
Вам нужно пометить слушателя сущности следующим образом в services.yaml:
services:
root\CoreBundle\EventListener\Entity\FileEntityListener
tags:
- { name: doctrine.orm.entity_listener }
Других решений пока нет …