<?php
namespace App\Controller;
use App\Form\ContactType;
use Symfony\Component\Mime\Email;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class ContactController extends AbstractController
{
/**
* @Route("/contact", name="app_contact")
*/
public function index(Request $request, MailerInterface $mailer): Response
{
// Vérifier si le formulaire a été soumis (méthode POST)
if ($request->isMethod('POST')) {
// Vérifier le reCAPTCHA
$recaptchaResponse = $request->request->get('g-recaptcha-response');
$url = 'https://www.google.com/recaptcha/api/siteverify';
$data = [
'secret' => '6LdsZb4qAAAAAI7xvU1kTognYncJkUCY35WpymUS',
'response' => $recaptchaResponse
];
$options = [
'http' => [
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => http_build_query($data)
]
];
$context = stream_context_create($options);
$result = file_get_contents($url, false, $context);
$responseData = json_decode($result);
if ($responseData->success) {
// Le reCAPTCHA est valide, continuer avec l'envoi du mail
$nom = $request->request->get('nom');
$email = $request->request->get('email');
$tel = $request ->request->get('tel');
$message = $request->request->get('message');
// Créer un e-mail
$emailMessage = (new Email())
->from('contact@dimawork.fr')
->to('contact@dimawork.fr')
->subject('Message de contact depuis le site')
->html('<p><strong>Nom:</strong> ' . $nom . '</p>
<p><strong>Email:</strong> ' . $email . '</p>
<p><strong>Tel:</strong> ' . $tel . '</p>
<p><strong>Message:</strong> ' . nl2br($message) . '</p>');
// Envoyer l'e-mail
$mailer->send($emailMessage);
return $this->render('contact/confirmation.html.twig', [
'nom' => $nom,
'email' => $email,
'tel'=> $tel,
'message' => $message,
]);
} else {
// Le reCAPTCHA n'est pas valide
$this->addFlash('error', 'Veuillez valider le reCAPTCHA');
return $this->redirectToRoute('app_contact');
}
}
return $this->render('contact/index.html.twig');
}
}