Avoir le message flash après avoir validé le formulaire en haut de la page

Signaler
Messages postés
5
Date d'inscription
vendredi 1 février 2019
Statut
Membre
Dernière intervention
23 mai 2021
-
 Tatanos -
Bonjour,

Quand on clique sur "Postuler", on se trouve au niveau du formulaire.





Je souhaite quand on valide le formulaire, on se retrouve en haut de la page avec le message de succès.



J'essaye de trouve la solution mais je n'arrive pas à trouver.

Voici le contrôleur :



    /**
     * @Route("/community-manager", name="job_offer_community_manager")
     */
    public function jobOfferCommunityManager(Request $request, \Swift_Mailer $mailer) : Response
    {
        $form = $this->createForm(FormType::class);
        $form->handleRequest($request);


        if ($form->isSubmitted() && $form->isValid()) {
            $contact = $form->getData();

            $message = (new \Swift_Message("Candidature"))
                ->setFrom($contact['email'])
                ->setTo("abah20000@gmail.com")
                ->setBody($this->renderView(
                    'public/email/message.html.twig',[
                        'nom' => $contact['nom'],
                        'commentaire' => $contact['commentaire'],
                        'email' => $contact['email']
                    ]
                ), 'text/html')
                ->attach(\Swift_Attachment::fromPath($contact['CV'],'application/pdf'));
            $mailer->send($message);

            $this->addFlash('success', 'Votre candidature a été transmis,
            nous vous répondrons dans les meilleurs délais.');

            return $this->redirectToRoute("job_offer_community_manager");
        }


        return $this->render("public/job-offer-comunity-manager.html.twig", [
            'jobOfferName' => 'Community Manager',
            'jobOfferLocation' => 'Paris, FRANCE',
            'jobOfferType' => 'CDI temps plein',
            'form' => $form->createView()
        ]);
    }




Le formulaire :


<?php

namespace App\Form;

use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\Extension\Core\Type\EmailType;
use Symfony\Component\Form\Extension\Core\Type\FileType;
use Symfony\Component\Form\Extension\Core\Type\SubmitType;
use Symfony\Component\Form\Extension\Core\Type\TextareaType;
use Symfony\Component\Form\FormBuilderInterface;
use Symfony\Component\OptionsResolver\OptionsResolver;

class FormType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->add('nom')
            ->add('email', EmailType::class)
            ->add('CV', FileType::class)
            ->add('commentaire', TextareaType::class, [
                'required' => false
            ])
            ->add('postuler', SubmitType::class)
        ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            // Configure your form options here
        ]);
    }
}




Une aide serait le bievenue.

Je vous remercie.


Configuration: Macintosh / Chrome 90.0.4430.212

1 réponse

Bonjour,

dans ton job-offer-comunity-manager.html.twig rajoute quelque chose comme ça :


{% for key, array in app.session.flashbag.all %}
{% for message in array %}

{{ dump(key) }}
<br/>
{{ dump(message) }}

{% endfor %}
{% endfor %}


et valide ton formulaire... tu devrais voir apparaitre ton message Flash là où tu as ajouté ce code.
Ensuite libre a toi de construire un joli template autour de ça pour que ça ressemble à ce dont tu as besoin.