Как разрешить исключение ServiceCircularReferenceException?

Я хотел бы ввести текущего пользователя в Entity Listener, но я столкнулся с ServiceCircularReferenceException .

Я знаю, что есть другие вопросы, связанные с этой проблемой, и одно из упомянутых решений заключалось в том, чтобы вставить весь service_container в слушатель, который не работал.

Затем я наткнулся на кажущийся дублирующий вопрос , где предоставленный принятый ответ заключался в том, чтобы реализовать UserCallable. Но это снова дает то же самое исключение.

Может быть, это связано с моей зависимостью от FOSUserBUndle?

Как я могу это исправить?

Исключение:

[Symfony \ Component \ DependencyInjection \ Exception \ ServiceCircularReferenceException] Циркулярная ссылка обнаружена для службы "doctrine.orm.default_entity_manager", путь: "doctrine.orm.default_entity_manager -> doctrine.dbal.default_connection -> h nassetdb.approval_listener -> security.context -> security.authentication.manager -> fos_user.user_provider.username -> fos_user.user_manager ".

Моя запись UserBundle service.yml:

 parameters: hn_user_callable.class: Hn\UserBundle\Services\UserCallable hn_user.callable: class: %hn_user_callable.class% arguments: ["@service_container"] 

Как настроить прослушиватель объектов:

 hnassetdb.approval_listener: class: %approval_listener.class% arguments: ['@hn_user.callable', '@logger'] tags: - { name: doctrine.event_listener, event: onFlush } 

UserCallable:

 <?php namespace Hn\UserBundle\Services; use Hn\UserBundle\Entity\User; use Hn\UserBundle\Exception\NoCurrentUserAvailableException; use Symfony\Component\DependencyInjection\ContainerInterface; class UserCallable implements UserCallableInterface { /** * @var \Symfony\Component\DependencyInjection\ContainerInterface */ private $container; public function __construct(ContainerInterface $container) { $this->container = $container; } /** * @return User * @throws \Hn\UserBundle\Exception\NoCurrentUserAvailableException */ public function getCurrentUser() { $currentUser = $this->container->get('security.context')->getToken()->getUser(); if (!$currentUser instanceof User) { throw new NoCurrentUserAvailableException(); } return $currentUser; } } 

Соответствующая часть моего слушателя:

 class ApprovalListener extends ContainerAware implements EventSubscriber { /** * @var \Hn\UserBundle\Entity\User */ protected $currentUser; /** * @var \Psr\Log\LoggerInterface */ private $logger; public function __construct(UserCallableInterface $userCallable, LoggerInterface $logger) { $this->currentUser = $userCallable->getCurrentUser(); $this->logger = $logger; } ... }