2016-03-21 5 views
1

In meinem symfony-Projekt habe ich einen Befehl für Cron-Task erstellt (läuft einmal für Tag). Es ändert sich eine Tabelle und diese Tabelle hat updatedBy Eigenschaft (durch Doktrin tadellosen Listener). Also muss ich einen Benutzer programmgesteuert protokollieren. Hier ist mein Code dafür.So senden Sie Symfony-Ereignis ohne Anforderung

if ($this->container->get("security.context")->getToken() === null) { 
     $token = new UsernamePasswordToken($systemUser, null, "admin_area", $systemUser->getRoles()); 
     $this->container->get("security.context")->setToken($token); 
} 

Mein Problem ist, wie dieses Ereignis zu versenden ist. Da es keine Anfrage gibt, kann ich folgenden Code nicht verwenden.

$request = $this->container->get("request"); 
     $event = new InteractiveLoginEvent($request, $token); 
     $this->container->get("event_dispatcher")->dispatch("security.interactive_login", $event); 

Auch erhalten ("Anfrage") Service kann nicht innerhalb Befehl verwenden. Bitte helfen Sie mir, diese Veranstaltung zu versenden.

Antwort

0

-Sie kann ein Request-Objekt über die create method als Beispiel erstellen:

$request = Request::create("?foo=bar"); 

es dann im Fall verwenden:

$event = new InteractiveLoginEvent($request, $token); 

Ich weiß nicht, ob einige params von der Anfrage muß aber Sie können hinzufügen (siehe das Dokument).

Hoffe diese Hilfe

+0

Problem ist immer noch da Liebe. Beim ersten Mal führe ich den Befehl updateBy korrekt aus. Wenn ich diesen Befehl erneut ausführe, wird das Feld updatedBy mit null gefüllt. dann wieder, wenn ich den Befehl ausführen füllen Sie updateBy Feld korrekt. Das passiert iterativ. Ich dachte, das passiert, weil ich nicht verschickt habe. Aber ich weiß nicht genau, was das Problem ist. –

Verwandte Themen