je travaille avec Symfony3 et SonataAdminBundle et je veux utiliser un listener pour modifier des infos d'une table dans la base de données après l'ajout d'un objet d'un autre admin par l'utilisateur.
Voilà mon listener :
<?php
namespace AppBundle\EventListener;
use Doctrine\ORM\Event\LifecycleEventArgs;
use AppBundle\Entity\Commande;
use Doctrine\ORM\EntityManager;
class CommandeSubmitListener
{
private $em;
public function __construct(EntityManager $em)
{
$this->em = $em;
}
public function postPersist(LifecycleEventArgs $event)
{
$entity= $event->getEntity();
if($entity instanceof Commande)
{
$commande = $entity;
$commandeElements = $commande->getCommandeElements();
foreach($commandeElements as $commandeElement)
{
$id = $commandeElement->getDocument()->getId();
$nb = $commandeElement->getNbCopie();
$document = $this->em->getRepository('AppBundle:Document')->find($id);
$document->setNbCommande()= $document->getNbCommande()+$nb ;
$this->em->flush();
}
}
}
}
Symfony m'affiche l'erreur suivante : Circular reference detected for service "doctrine.dbal.default_connection", path: "doctrine.dbal.default_connection".
Je suis bloqué dans cette partie , est ce qu'il y a une idée sur comment utiliser les Eventlistener pour faire ça , est ce qu'on peut manipuler la base de données dans un listener ?
Problème de Event listener SonataAdmin
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.