src/Controller/Contact/ContactController.php line 49

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Contact;
  3. use App\Model\EmailSenderInterface;
  4. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  5. use Symfony\Component\Form\Extension\Core\Type\EmailType;
  6. use Symfony\Component\Form\Extension\Core\Type\SubmitType;
  7. use Symfony\Component\Form\Extension\Core\Type\TextareaType;
  8. use Symfony\Component\Form\Extension\Core\Type\TextType;
  9. use Symfony\Component\HttpFoundation\Request;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. class ContactController extends AbstractController
  13. {
  14.     /**
  15.      * @Route("/contact", name="contact")
  16.      */
  17.     public function index(Request $requestEmailSenderInterface $emailSender): Response
  18.     {
  19.         $form $this->makeForm();
  20.         $form->handleRequest($request);
  21.         if ($form->isSubmitted() && $form->isValid()) {
  22.             // data is an array with "name", "email", and "message" keys
  23.             $data $form->getData();
  24.             if ($emailSender->send($data['name'], $data['email'], $data['message'])) {
  25.                 $this->addFlash('success''Message envoyé');
  26.                 $form $this->makeForm();
  27.             } else {
  28.                 $this->addFlash('danger''Il y a eu une erreur');
  29.                 return $this->render('contact/index.html.twig', [
  30.                     'form' => $form->createView(),
  31.                 ]);
  32.             }
  33.         }
  34.         return $this->render('contact/index.html.twig', [
  35.             'form' => $form->createView(),
  36.         ]);
  37.     }
  38.     protected function makeForm()
  39.     {
  40.         return $this->createFormBuilder()
  41.             ->add('name'TextType::class, [
  42.                 'required' => false,
  43.             ])
  44.             ->add('email'EmailType::class, [
  45.                 'required' => false,
  46.             ])
  47.             ->add('message'TextareaType::class, [
  48.                 'required' => false,
  49.             ])
  50.             ->add('send'SubmitType::class)
  51.             ->getForm();
  52.     }
  53. }