src/Controller/ContactController.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Form\ContactType;
  4. use Symfony\Component\Mime\Email;
  5. use Symfony\Component\HttpFoundation\Request;
  6. use Symfony\Component\Mailer\MailerInterface;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. class ContactController extends AbstractController
  11. {
  12. /**
  13.  * @Route("/contact", name="app_contact")
  14.  */
  15.  public function index(Request $requestMailerInterface $mailer): Response
  16.  {
  17.      // Vérifier si le formulaire a été soumis (méthode POST)
  18.      if ($request->isMethod('POST')) {
  19.          // Vérifier le reCAPTCHA
  20.          $recaptchaResponse $request->request->get('g-recaptcha-response');
  21.          $url 'https://www.google.com/recaptcha/api/siteverify';
  22.          $data = [
  23.              'secret' => '6LdsZb4qAAAAAI7xvU1kTognYncJkUCY35WpymUS',
  24.              'response' => $recaptchaResponse
  25.          ];
  26.          
  27.          $options = [
  28.              'http' => [
  29.                  'header' => "Content-type: application/x-www-form-urlencoded\r\n",
  30.                  'method' => 'POST',
  31.                  'content' => http_build_query($data)
  32.              ]
  33.          ];
  34.          
  35.          $context stream_context_create($options);
  36.          $result file_get_contents($urlfalse$context);
  37.          $responseData json_decode($result);
  38.          
  39.          if ($responseData->success) {
  40.              // Le reCAPTCHA est valide, continuer avec l'envoi du mail
  41.              $nom $request->request->get('nom');
  42.              $email $request->request->get('email');
  43.              $tel $request ->request->get('tel');
  44.              $message $request->request->get('message');
  45.              
  46.              // Créer un e-mail
  47.              $emailMessage = (new Email())
  48.                  ->from('contact@dimawork.fr')
  49.                  ->to('contact@dimawork.fr')
  50.                  ->subject('Message de contact depuis le site')
  51.                  ->html('<p><strong>Nom:</strong> ' $nom '</p>
  52.                          <p><strong>Email:</strong> ' $email '</p>
  53.                          <p><strong>Tel:</strong> ' $tel '</p>
  54.                          <p><strong>Message:</strong> ' nl2br($message) . '</p>');
  55.              // Envoyer l'e-mail
  56.              $mailer->send($emailMessage);
  57.              return $this->render('contact/confirmation.html.twig', [
  58.                  'nom' => $nom,
  59.                  'email' => $email,
  60.                  'tel'=> $tel,
  61.                  'message' => $message,
  62.              ]);
  63.          } else {
  64.              // Le reCAPTCHA n'est pas valide
  65.              $this->addFlash('error''Veuillez valider le reCAPTCHA');
  66.              return $this->redirectToRoute('app_contact');
  67.          }
  68.      }
  69.      return $this->render('contact/index.html.twig');
  70.  }
  71. }