我试图在我写的Listener中获取当前登录的用户(在symfony2中工作,但不再在Symfony 3.2.2中工作)。
我的问题是security.token_storage-> getToken()始终为null。
我发现的是这一点可能没有执行securityListener的提示;所以我得不到令牌 - >因此没有用户。
所以这是服务声明(service.xml)
acme.history_logging_listener:
class: Acme\EventListener\HistoryLoggingListener
arguments:
- "@service_container"
- "@security.token_storage"
tags:
- { name: doctrine.event_listener, event: onFlush }
这是Classcode
public function __construct(ContainerInterface $oContainer, TokenStorageInterface $oTokenStorage)
{
$this->_oTokenStorage = $oTokenStorage;
}
public function onFlush(OnFlushEventArgs $eventArgs)
{
\dump($this->_oTokenStorage->getToken()); // should contain a value (not null)
die();
}
在第二次听到听众后,将填写令牌;第一次迭代没有数据;所以对我来说没问题。
答案 0 :(得分:0)
您可以在其他事件中将其设置为私有变量,例如prePersist
和/或preUpdate
,然后访问onFlush
吗?
以这种方式在侦听器中设置的成员应该在任何请求的持续时间内保持不变。