Как в symfony вызвать getUser в EventSubscriber?

В Symfony у вас есть возможность вызвать getUser в EventSubscriber, используя сервис security.token_storage.

EventSubscriber - это класс, который подписывается на определенное событие в Symfony и реагирует на него выполняя определенные действия. Когда событие происходит, Symfony вызывает соответствующий метод в EventSubscriber.

Чтобы получить доступ к текущему пользователю в EventSubscriber, вам нужно добавить аргумент TokenStorageInterface в конструктор вашего EventSubscriber:

use SymfonyComponentEventDispatcherEventSubscriberInterface;
use SymfonyComponentSecurityCoreAuthenticationTokenStorageTokenStorageInterface;

class YourEventSubscriber implements EventSubscriberInterface
{
    private $tokenStorage;

    public function __construct(TokenStorageInterface $tokenStorage)
    {
        $this->tokenStorage = $tokenStorage;
    }

    public static function getSubscribedEvents()
    {
        return [
            // список событий, на которые подписан ваш EventSubscriber
        ];
    }

    public function yourEventMethod()
    {
        // Получение текущего пользователя
        $user = $this->tokenStorage->getToken()->getUser();

        // Делайте что-то с пользователем
    }
}

После того, как вы добавили TokenStorageInterface как аргумент вашего конструктора, Symfony автоматически внедрит экземпляр этого сервиса в ваш EventSubscriber при создании экземпляра EventSubscriber.

В методе yourEventMethod вы можете получить текущий токен аутентификации, используя $this->tokenStorage->getToken(), а затем получить пользователя с помощью getUser(). Вы можете использовать эту информацию для выполнения нужных действий в ответ на соответствующее событие.

Надеюсь, это помогло! Если у вас возникнут еще вопросы, пожалуйста, дайте мне знать.