1
リスナーイベント "onKernelRequest"からユーザーセッションを取得しようとしていますが、security.contextはまだ存在せず、毎回nullを返します。onKernelRequestイベントでsecurity.contextを取得する方法。 symfony2
セキュリティコンテキストの後にリクエストリスナーを読み込むにはどうすればよいですか?
ありがとうございます。
class CurrencyListener implements EventSubscriberInterface {
private $default_currency;
private $serviceContainer;
public function __construct($default_currency, $serviceContainer) {
$this->default_currency = strtoupper($default_currency);
$this->serviceContainer = $serviceContainer;
}
public function onKernelRequest(GetResponseEvent $event) {
$request = $event->getRequest();
var_dump($this->serviceContainer->get('security.context')->getToken());
}
public static function getSubscribedEvents() {
return array(
KernelEvents::REQUEST => array(array('onKernelRequest', 15)),
);
}
}
はなぜ* * kernel.controllerのようなイベントを聞いていませんか? – Rinat
さらに、あなたのサービスに 'service_container'を注入しないでください。あなたの例では、むしろ古い 'security.context'またはより最近の' security.token_storage'を注入するべきです。たとえば、「コードがコンテナに依存するのを避ける」セクション(http://symfony.com/doc/current/components/dependency_injection.html)を参照してください。 – Tsounabe