В 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()
. Вы можете использовать эту информацию для выполнения нужных действий в ответ на соответствующее событие.
Надеюсь, это помогло! Если у вас возникнут еще вопросы, пожалуйста, дайте мне знать.