Partage
  • Partager sur Facebook
  • Partager sur Twitter

Accéder à l'id de l'user depuis un service

Synfony 4

Sujet résolu
    23 janvier 2020 à 12:19:00

    Bonjour,

    Je souhaite accéder à l'id de l'user connecté depuis un service mais je n'y arrive pas..;

    Mon ficheir service.yaml :

        PlaqueImmatriculationUpdatelistener:
            class: App\EventListener\PlaqueImmatriculationUpdateListener
            arguments: []
            tags:
                - { name: doctrine.event_listener, event: onFlush }
    

    Mon service :

    <?php
    
    namespace App\EventListener;
    
    use App\Entity\LogPlaqueImmatriculation;
    use App\Entity\PlaqueImmatriculation;
    use Doctrine\ORM\Event\OnFlushEventArgs;
    
    class PlaqueImmatriculationUpdateListener
    {
        
    
        public function onFlush(OnFlushEventArgs $args)
        {
    
            $em = $args->getEntityManager();
            $uow = $em->getUnitOfWork();
            // get only the entities scheduled to be updated
            $entities = $uow->getScheduledEntityUpdates();
    
            foreach ($entities as $entity) {
    
                
                if ($entity instanceof PlaqueImmatriculation) {
    
                    
                    $changes_set = $uow->getEntityChangeSet($entity);
    
                    $changes = array_keys($changes_set);
    
                    foreach ($changes as $changed_property) {
                        if ($changed_property == "numero") {
    
                            $log = new LogPlaqueImmatriculation;
    
                            $log->setUser($entity->getUserLast()); ///// je dois recuperer mon user ici
                            $log->setPlaqueImmatriculation($entity);
                            $log->setNewValue($changes_set[$changed_property][1]);
                            $log->setOldValue($changes_set[$changed_property][0]);
                            if ($changes_set[$changed_property][0] == null) {$log->setAction("ajout");} else {
                                { $log->setAction("modification");}
                            }
    
                            $log->setField($changed_property);
    
                            $em->persist($log);
                            $classMetadata = $em->getClassMetadata('App\Entity\LogPlaqueImmatriculation');
                            $uow->computeChangeSet($classMetadata, $log);
    
                        }
    
    
                    }
    
                }
            }
    
        }
    
    }
    

     Je souhaite enregistrer mon user identifié dans $log->setUser();

    Je dois injecter le service dans le yaml ?


        PlaqueImmatriculationUpdatelistener:
            class: App\EventListener\PlaqueImmatriculationUpdateListener
            arguments: ["@security.token_storage"]
            tags:
                - { name: doctrine.event_listener, event: onFlush }


    C'est après que ça se gâte... je n'arrive rien à en tirer du coté de mon service...

    Si vous avez une piste je suis preneur...




    • Partager sur Facebook
    • Partager sur Twitter
      23 janvier 2020 à 12:40:09

      Bonjour,

      Il manque le constructeur dans ton service pour injecter la dépendance 

      private $security;
      
      public function __construct(Security $security)
      {
          $this->security = $security;
      }

      N'oublie pas d'importer Symfony\Component\Security\Core\Security , tu as l'user connecté avec $this->security->getUser();

      Retire arguments dans ton service, Symfony va gérer ça automatiquement pour toi

      -
      Edité par WillyKouassi 23 janvier 2020 à 12:40:56

      • Partager sur Facebook
      • Partager sur Twitter
      le bienfait n'est jamais perdu
        23 janvier 2020 à 12:54:30

        Merci bien, ça fonctionne !!

        Il me semblait bien avoir testé ça pourtant...

        Encore merci !

        • Partager sur Facebook
        • Partager sur Twitter

        Accéder à l'id de l'user depuis un service

        × 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