Récuperer des informations de ma base de données [Résolu/Fermé]

Signaler
-
 Shadruus -
Bonjour,

Alors voilà je suis en stage et je travaille sur la mise à jour du site internet de l'entreprise, je travaille sous le framework symfony.
Le problème est que je n'arrive pas a récupérer des emails dans ma base de données. Je vous explique, grace à des repositories je montre à mon code ou chercher dans ma base de données en l’occurrence par RÔLE, une fois que j'ai l'entité dont j'ai besoin, donc qu'il a la bonne localisation, plus bas dans le code via une fonction je lui dis d'envoyer l'email automatique a cette adresse que je viens de récupérer dans ma base de données mais rien ne se passe.
Le développeur précédent avait écrit les adresses email en dur dans le code, ce qui nous obligeais a changer les adresses sur le code en cas de changement, et on voudrait pouvoir changer les adresses directement sur le site relié a la base de données.

J’espère avoir été clair c'est mon premier post sur un forum et je ne suis pas très bon pédagogue, si quelqu'un arrive a me décrypté, j'aimerais beaucoup avoir son aide


(je dis a mon code l'endroit ou je veux recuperer les adresses email)
$em = $this->getDoctrine()->getManager();
$arrayDaf = $em->getRepository(User::class)->findBy(array('roles'=>'ROLE_DAF'));
$arrayCodir = $em->getRepository(User::class)->findByarray('roles'=>'ROLE_CODIR'));


(je lui dis d'envoyer un mail aux adresses que j'ai recuperer à savoir getEmail())
if ($prices[0] > 5000 || $prices[1]) {
foreach($arrayDaf as $userdaf){
$this->sendUserMailAction($command, $userdaf->getEmail());
}
$command->setStatus(CommandStatusType::VALIDATION_DAF);
} elseif ($prices[1]) {
foreach($arrayCodir as $usercodir){
$this->sendUserMailAction($command, $usercodir->getEmail());
}
$command->setStatus(CommandStatusType::VALIDATION_EXCOM)



Le développeur précédent avait écrit les adresses email en dur dans le code, ce qui nous obligeais a changer les adresses sur le code en cas de changement, et on voudrait pouvoir changer les adresses directement sur le site relié a la base de données.
J’espère avoir été clair c'est mon premier post sur un forum et je ne suis pas très bon pédagogue, si quelqu'un arrive a me décrypté, j'aimerais beaucoup avoir son aide. (tout le code n'est pas présent seulement ce qui m'importe)

Merci par avance

3 réponses

Messages postés
12185
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 septembre 2020
686
bonjour, merci d'utiliser les balises de code quand tu partages du code.
Bonjour,

Tout d'abord merci de ta réponse et je tiens à m'excuser pour le manque de balise je viens de voir comment on pouvais faire cela.
Donc voici mon code avec les balises ainsi que des commentaires pour être plus clair sur le sujet de mon problème.

public function commandValidationAction(Request $request, Command $command = null)
    {
        if (!$command instanceof Command){
            throw new NotFoundHttpException('Command not found');

        /*Grace aux repositories je dis a mon code de se positionner à l'endroit role daf et role codir*/ 
        $em = $this->getDoctrine()->getManager();
        $arrayDaf = $em->getRepository(User::class)->findBy(array('roles'=>'ROLE_DAF'));
        $arrayCodir = $em->getRepository(User::class)->findBy(array('roles'=>'ROLE_CODIR'));
       

        $prices = $this->getTotalPriceAndUnitPrice($command->getTools());


        $comment = new CommandComment();

        $form = $this->createForm(CommandCommentType::class, $comment);
        $form->handleRequest($request);

        if ($form->isSubmitted() && $form->isValid()) {
            $comment->setCommand($command);
            $comment->setUser($this->getUser());

            $em->persist($comment);
            $em->flush();
            
            
            if ($prices[0] > 5000 || $prices[1]) {
                foreach($arrayDaf as $userdaf){
                    $this->sendUserMailAction($command, $userdaf->getEmail()/*Ici je lui dis de prendre l'email du role daf*/ );
                } 
                $command->setStatus(CommandStatusType::VALIDATION_DAF);
            } elseif ($prices[1]) {
                foreach($arrayCodir as $usercodir){
                    $this->sendUserMailAction($command, $usercodir->getEmail()/*Ici je lui dis de prendre l'email du role codir*/);
                }
                $command->setStatus(CommandStatusType::VALIDATION_EXCOM);
            }
            } else {
                $this->sendProviderMailAction($command);
                $command->setStatus(CommandStatusType::SEND);
                $this->sendTechValidationNotificationMailAction($command);
            }

            $em->persist($command);
            $em->flush();

            $notif = new CommandUpdate();
            $notif->setUser($this->getUser());
            $notif->setCommand($command);
            $notif->setType(4);

            $em->persist($notif);
            $em->flush();

            $title = "Commande validée";
            $text = $this->getUser()->getDisplayName() . " : Vient de **valider** la commande **".$command->getReference().'**';
            $uri = $this->generateUrl('command_show', array('id' => $command->getId()), UrlGeneratorInterface::ABSOLUTE_URL);
            $this->sendToMicrosoftTeams($title, $text, $uri);

            return $this->redirectToRoute('command_show', array('id' => $command->getId()));
        }

        return $this->render('@Tools/Commands/validationCommand.html.twig', array(
            'command' => $command,
            'form' => $form->createView(),
        ));

    }
Messages postés
12185
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 septembre 2020
686
as-tu pu déterminer si les instructions en lignes 30 et 35 sont exécutées?
oui ces instructions s’exécutent étant donné que lorsque a la place de mon $userdaf->getEmail() j'écris un email en dur, un email de validation est bien envoyé à l'adresse écrite
Non ça je n'ai pas pu le déterminer, comment puis-je procéder ?
Messages postés
12185
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 septembre 2020
686 > Shadruus
par exemple en l'affichant, en l'écrivant dans un fichier, dans une base de données, ou en l'incluant dans le texte d'un email.
Je suis désolé mais je ne sais pas comment faire cela, ça devrait être trivial j'imagine...
Je code sur visual studio code, j'ai oublié de le préciser
Messages postés
12185
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 septembre 2020
686 > Shadruus
je ne connais ni le framework, ni ton environnement.
as-tu essayé echo?
Oui mais je ne sais pas comment afficher le résultat obtenu..
Et je penses que l'instruction ne retourne rien justement ou en tout cas pas un email sinon ça fonctionnerai.