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

Fermé
bh_france Messages postés 10 Date d'inscription vendredi 1 février 2019 Statut Membre Dernière intervention 23 juillet 2023 - 23 mai 2021 à 20:11
 Tatanos - 31 mai 2021 à 16:43
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
A voir également:

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.
0