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

- - Dernière réponse :  Shadruus - 29 août 2019 à 14:50
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
Afficher la suite 

3 réponses

Messages postés
8531
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
423
0
Merci
bonjour, merci d'utiliser les balises de code quand tu partages du code.
Commenter la réponse de yg_be
0
Merci
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(),
        ));

    }
yg_be
Messages postés
8531
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
423 -
as-tu pu déterminer si les instructions en lignes 30 et 35 sont exécutées?
Commenter la réponse de Shadruus
0
Merci
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 ?
yg_be
Messages postés
8531
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
423 > 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
yg_be
Messages postés
8531
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
18 septembre 2019
423 > 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.
Commenter la réponse de Shadruus