Get User in einem Doctrine EventListener
wenn ich eine neue Plasmid-Entität registriere, möchte ich ihm einen automatischen Namen geben (wie: p0001, p0002, p0003), dazu muss ich in der Datenbank die letzte Plasmid-Entität für einen bestimmten Benutzer auswählen, seinen autoName erhalten, und benutze diesen vorherigen Namen, um den neuen zu definieren.
Aber wenn ich den token_storage in meinen Listener einspeise, ist der Token null ... Im Controller kann ich den Benutzer haben, es ist Arbeit.
The service.yml
app.event_listener.plasmid:
class: AppBundle\EventListener\PlasmidListener
arguments: ["@security.token_storage"]
tags:
- { name: doctrine.event_listener, event: prePersist }
nd der PlasmidListen
class PlasmidListener
{
private $user;
public function __construct(TokenStorage $tokenStorage)
{
$this->user = $tokenStorage->getToken()->getUser();
}
public function prePersist(LifecycleEventArgs $args)
{
$entity = $args->getEntity();
// If the entity is not a Plasmid, return
if (!$entity instanceof Plasmid) {
return;
}
// Else, we have a Plasmid, get the entity manager
$em = $args->getEntityManager();
// Get the last plasmid Name
$lastPlasmid = $em->getRepository('AppBundle:Plasmid')->findLastPlasmid($this->user);
// Do something with the last plasmid in the database
}
}
Wenn jemand weiß, warum ich den tatsächlichen Benutzer in den Doctrine Listener aufnehmen kann?
Vielen Dan