Symfony2 - Injizieren Sie den aktuell angemeldeten Benutzer in einen Listener

8

Ich versuche den aktuell angemeldeten Benutzer in einen Listener zu injizieren. Mein Ziel ist es, ein aktuelles \ DateTime () in die 'last_active' Spalte meiner 'demo_user' Tabelle jedes Mal zu schreiben, wenn der Benutzer eine Aktion ausführt (beides diese Methoden funktionieren nicht für mich).

app / config / config.yml

%Vor%

Quelle / Demo / UserBundle / EventListener / ActivityWatcher.php

%Vor%

Aber der $ -Token ist immer leer ... UPDATE: Habe nicht erwähnt, dass ich eingeloggt und authentifiziert bin, wenn das passiert

%Vor%

Irgendwelche Ideen? Arrgh, danke, Jan

UPDATE:

Ich habe auch versucht, nur den security.context zu injizieren:

%Vor%

aber habe ein

%Vor%     
jxp315 26.07.2013, 20:24
quelle

2 Antworten

2

für symfony 2.4 sollten Sie in der Lage sein, Ausdruck zu injizieren, also statt @service_container benutzen @=service('security.context').getToken().getUser() , um Benutzer direkt zu erhalten

    
kshishkin 01.01.2014, 22:19
quelle
0

Die Lösung des Zirkularreferenzproblems beim Injizieren des aktuellen Benutzers implementiert einen aufrufbaren Benutzer.

Sie können die Klasse UserCallable verwenden von KnpDoctrineBehaviors.

Zuerst müssen Sie einen Service aus der vom Benutzer aufrufbaren Klasse erstellen und den Container in ihn einfügen.

Sie finden ein YML-Beispiel dazu in der von KnpDoctrineBehaviors .

Fügen Sie jetzt Ihren UserCallable-Dienst in Ihren Listener ein und rufen Sie den Benutzer vom Benutzer abrufbar ab, wie Sie in Quelle des beschuldigen Zuhörers .

    
nifr 26.07.2013 23:25
quelle