Ich habe ein System, wo ein Benutzer eine Bestellung erstellen kann. Sobald der Auftrag erstellt wurde, sollte eine weitere Entitätstabelle mit dem aktuellen Benutzer, der den Auftrag erstellt hat, dem Zeitpunkt, an dem er erstellt wurde, und einigen anderen Informationen aktualisiert werden.Symfony PHP Event Listener funktioniert nicht
Grundsätzlich ein Protokoll.
Hier ist meine Listener-Klasse;
namespace Qi\Bss\BaseBundle\Lib\PurchaseModule;
use Qi\Bss\BaseBundle\Entity\Business\PurchaseModule\PmodLog;
use Qi\Bss\BaseBundle\Entity\Business\PurchaseModule\PmodOrder;
use Doctrine\ORM\Event\LifecycleEventArgs;
/**
* Class OrderLogger. Purchase Module activity logger.
*/
class OrderLogger
{
/**
* Service container
* @var type
*/
private $serviceContainer;
/**
* Performs tasks before destruction
* @ORM\PostPersist
*/
public function postPersist(LifecycleEventArgs $args)
{
$order = $args->getEntity();
if ($order instanceof PmodOrder) {
$logRecord = new PmodLog();
$user = $this->serviceContainer->get('security.token_storage')->getToken()->getUser();
$logRecord->setCreatedBy($user);
$logRecord->setAction('Gemaak');
$logRecord->setCreatedAt(new \DateTime());
$logRecord->setOrder($order);
$logRecord->setDepartment($user->getDepartment());
}
}
/**
* Sets the sales order exporter object
* @param type $serviceContainer
*/
public function setServiceContainer($serviceContainer)
{
$this->serviceContainer = $serviceContainer;
}
}
Ich bekomme nicht, was ich falsch mache und dass die Protokolltabelle in meiner Datenbank überhaupt nicht aktualisiert wird.
Hier ist auch mein Service;
Ich bekomme keinen Fehler, die Bestellung wird perfekt erstellt, aber die Protokolldatenbank bleibt leer
Ahh! Vielen Dank! Ich war mir dessen bewusst, dass persist und flush und probierten '$ em = $ this-> getDoctrine() -> getManager();' aber das funktioniert nur in Controllern, richtig? Ich wusste nicht, dass ich den Entity Manager von '$ args' bekommen kann. –
Siehe http://www.doctrine-project.org/api/orm/2.1/class-Doctrine.ORM.Event.LifecycleEventArgs.html. – dlondero