Partage
  • Partager sur Facebook
  • Partager sur Twitter

Problème de Event listener SonataAdmin

    28 mai 2017 à 19:21:49

    Bonjour tous le monde , 

    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();
                    
                    }
                }
        }
    }

    et mon service : 

    commande_submit_listener:
            class: AppBundle\EventListener\CommandeSubmitListener
            arguments: ['@doctrine.orm.entity_manager']
            tags:
                - { name: doctrine.event_listener, event: postPersist }

    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 ? 

    • Partager sur Facebook
    • Partager sur Twitter

    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.
    • Editeur
    • Markdown