1
私のsymfonyプロジェクトでは、cronタスク(1日1回実行)のコマンドを作成しました。それはテーブルを変更し、そのテーブルは(Doctrine blameable listenerによる)updatedByプロパティを持ちます。 私はプログラムでユーザーをログする必要があります。 ここに私のコードです。リクエストなしでsymfonyイベントをディスパッチする方法
if ($this->container->get("security.context")->getToken() === null) {
$token = new UsernamePasswordToken($systemUser, null, "admin_area", $systemUser->getRoles());
$this->container->get("security.context")->setToken($token);
}
私の問題は、このイベントをディスパッチする方法です。要求がないので、次のコードを使用することはできません。
$request = $this->container->get("request");
$event = new InteractiveLoginEvent($request, $token);
$this->container->get("event_dispatcher")->dispatch("security.interactive_login", $event);
get( "request")サービスはinsideコマンドを使用できません。 このイベントをディスパッチしてください。
問題はまだあります。初めてコマンドを実行すると、updatedByフィールドが正しく入力されます。そのコマンドをもう一度実行すると、updatedByフィールドはnullで埋められます。 もう一度私はコマンドを実行する場合、それは正しくupdatedByフィールドを埋める。それは繰り返し発生します。私は発送しなかったので、それが起こったと思った。しかし、私は正確に何が問題なのか分かりません。 –