EventDispatcher のコードをざっと見てみると、config.yml で特定のリスナーを無効にする簡単な方法が見つかりません。
できることの 1 つは、LastLoginListener を独自のクラスで拡張し、パラメータfos_user.security.interactive_login_listener.class
( https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/config/security.xmlを参照) を拡張クラスに設定することです。getSubscribedEvents()
次のようなものでオーバーライドします。
public static function getSubscribedEvents()
{
return array(
FOSUserEvents::SECURITY_IMPLICIT_LOGIN => 'onImplicitLogin',
);
}
SecurityEvents::INTERACTIVE_LOGIN
したがって、イベントのサブスクリプションを削除します。
これがこれを行うための最もクリーンな方法かどうかはわかりませんが、おそらく必要なコード行数が最も少ない方法です。
編集:
私の答えをさらに詳しく説明すると、構成ファイルを介して特定のリスナー メソッドを無効にすることができないと思う理由は、LastLoginListener が kernel.event_subscriber タグを使用してカスタム イベントをリッスンしていることを示すためです。
このSymfony\Bundle\FrameworkBundle\DependencyInjection\Compiler\RegisterKernelListenersPass
クラスはgetSubscribedEvents()
、kernel.event_subscriber タグを使用して各サービスのメソッドを呼び出し、返されたすべてのクラス + コールバックのイベント サブスクリプションを追加します。
これを設定するコードのどこにもオーバーライドがあるようには見えません。
ただし、これはすべてコードを調べることに基づいているため、見逃したオプションがどこかにある可能性があります。