IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

L'affichage des messages flash ne fonctionne pas [4.x]


Sujet :

Symfony PHP

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut L'affichage des messages flash ne fonctionne pas
    Bonjour,

    J'utilise la version 4.3.9 de Symfony. Lors de l'envoi d'un formulaire, je veux avertir l'utilisateur du statut de sa demande. Pour ce faire, je tente d'utiliser les messages flash, mais ils ne sont pas affichés.

    Voici le code de la fonction de mon controller :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
        /**
         * User request to change its password
         * 
         * @Route("/security/resetting/request", name="security.resetting.request")
         *
         * @param Request $request
         * @param \Swift_Mailer $mailer
         * @param TokenGeneratorInterface $tokenGenerator
         * @param EntityManagerInterface $manager
         * @param UserRepository $userRepository
         * 
         * @return Response
         */
        public function resetingRequest(Request $request, \Swift_Mailer $mailer, TokenGeneratorInterface $tokenGenerator, EntityManagerInterface $manager, 
                                        UserRepository $userRepository): Response
        {
     
            $administrator = $userRepository->findOneBy(array('name' => 'administrator'));
     
            $form = $this->createFormBuilder()
                         ->add('email', EmailType::class, ['constraints' => [
                                                                                new Email(),
                                                                                new NotBlank()
                                                                            ]
                                                          ]
                              )
                         ->getForm();
     
            $form->handleRequest($request);
     
            if ($form->isSubmitted() && $form->isValid()) 
            {
     
                $user = $manager->getRepository(User::class)->loadUserByEmail($form->getData()['email']);
     
                if (! $user) 
                {
                    \dump($user);
                    $this->addFlash('error', "The email address isn't linked to a Roadtrip user.");
     
                    //return $this->redirectToRoute("security.resetting.request");
     
                }
                else
                { 
     
                    $user->setToken($tokenGenerator->generateToken());
                    $user->setPasswordRequestedAt(new \Datetime());
                    $manager->flush(); 
     
                    $mail = new Mail;
     
                    $mail->setReceiver($user)
                        ->setSubject($this->getParameter('password_Resetting_email_subject'))
                        ->setSender($administrator)
                        ->setMessage('Password renew')
                        ->setBody($this->renderView(
                                                        'security/passwordResettingEmail.html.twig', 
                                                        ['mail' => $mail]
                                                    )
                                    )
                    ;
     
                    if ($mail->sendEmail($mailer))
                    { 
     
                        $manager->persist($mail);
                        $manager->flush();
     
                        $this->addFlash('success', "An email has been sent to the registered email address in your account so you can change your password.");
     
                        //return $this->redirectToRoute("security.login");
     
                    }
                    else
                    {
     
                        $this->addFlash('error', "Impossible to send a confirmation email to change your password.");
     
                        //return $this->redirectToRoute("security.resetting.request");
     
                    }
     
                }
     
                return $this->redirectToRoute("security.resetting.request");
     
            }
     
            return $this->render('security/passwordResettingRequest.html.twig', [
                                                                                    'form' => $form->createView(),
                                                                                    'bodyId' =>  'secutityResettingRequest'
                                                                                ]
                                )
            ;
     
        }
    Voici maintenant le code de mon template :

    Code twig : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    {% extends 'base.html.twig' %}
     
    {% block title %}
        Roadtripr - Password ressetting request
    {% endblock %}
     
    {% block body %}
        {% for label, messages in app.flashes %}
            {% for message in messages %}
                <div class="flash-{{ label }}">
                    {{ message }}
                </div>
            {% endfor %}
        {% endfor %}
    ...

    Quelqu'un aurait une idée sur la provenance du problème?

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Mai 2004
    Messages
    803
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 803
    Points : 356
    Points
    356
    Par défaut
    Le problème provient du fait que mon base.html.twig contient des formulaires en mode modal qui eux-mêmes affichent les messages flash qui ne sont pas affichés si le modal n'est pas appelé.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. affichage des messages reçus
    Par castelm dans le forum Outlook
    Réponses: 2
    Dernier message: 08/03/2007, 19h13
  2. Réponses: 6
    Dernier message: 23/12/2006, 12h46
  3. Des tableaux qui ne fonctionnent pas ?
    Par kevinf dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 18/12/2006, 19h22
  4. Réponses: 2
    Dernier message: 05/05/2006, 14h49
  5. Réponses: 2
    Dernier message: 23/03/2006, 10h37

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo