0
私が書いたリスナーに現在ログインしているユーザーを取得しようとしています(symfony2では動作しますが、Symfony 3.2.2では動作しません)。リスナーdoctrine.event_listener:onFlush、security.token_storage always null
私の問題は、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 }
であり、ここでトークンは、リスナーの2回目の呼び出しの後に入力されます
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();
}
ヒントのためのthx!私はそれを試して、トークンを確認したが、成功しなかった。リスナーの2回目の呼び出し(何とか後で)トークンが埋まっていた:)私は解決策がdie()を使用せず、その後の反復をチェックすることだと思う。現時点までのデータは存在していないため、トークンは2回目に利用可能で、私のニーズに対応します。 THX! –