src/Controller/Main/ContactController.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Main;
  3. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  8. use Symfony\Component\Mailer\MailerInterface;
  9. use App\Form\ContactType;
  10. use App\Service\Email\EmailService;
  11. use Symfony\Contracts\Translation\TranslatorInterface;
  12. class ContactController extends AbstractController
  13. {
  14.     /**
  15.      * @Route("/contact", name="contact")
  16.      */
  17.     public function index(Request $requestMailerInterface $mailerInterfaceTranslatorInterface $translatorEmailService $emailService): Response
  18.     {
  19.         $formContact $this->createForm(ContactType::class);
  20.         $contact $formContact->handleRequest($request);
  21.         $reCAPTCHA_secret_key="6LfDomMhAAAAAG1cNp7cAYHiI6NBvfdsM-ItcCru";
  22.         $g_recaptcha_response="";
  23.         $ip $_SERVER['REMOTE_ADDR'];
  24.         $globals $this->get('twig')->getGlobals();
  25.         if($formContact->isSubmitted() && $formContact->isValid()){
  26.             $g_recaptcha_response $request->request->get('g-recaptcha-response');
  27.         $url 'https://www.google.com/recaptcha/api/siteverify?secret='
  28.         urlencode($reCAPTCHA_secret_key) . '&response=' 
  29.         urlencode($g_recaptcha_response) . '&remoteip=' 
  30.         urlencode($ip);
  31.         $response file_get_contents($url);
  32.         $responeKey json_decode($response,true);
  33.         if($responeKey['success']){        
  34.             $email = (new TemplatedEmail())
  35.                 ->from($contact->get('email')->getData())
  36.                 ->to($globals['site']['email'])
  37.                 ->subject('Contact depuis le site malick tounkara')
  38.                 ->htmlTemplate('email/contact.html.twig')
  39.                 ->context([
  40.                     'theme'=>$emailService->theme(6),
  41.                     'name'=>$contact->get('name')->getData(),
  42.                     'mail'=>$contact->get('email')->getData(),
  43.                     'phone'=>$contact->get('phone_number')->getData(),
  44.                     'object'=>$contact->get('object')->getData(),
  45.                     'message'=>$contact->get('message')->getData(),
  46.                 ])
  47.                 ;
  48.             $mailerInterface->send($email);
  49.             $message $translator->trans('Email send');
  50.             $this->addFlash('success',$message);
  51.             return $this->redirectToRoute('contact');
  52.             }elseif($responeKey['error-codes']){
  53.                 $this->addFlash('errors','Captcha invalide');
  54.               }else{
  55.                 $this->addFlash('errors','Une erreur est survenu');
  56.               }
  57.         }
  58.         return $this->renderForm($this->getParameter('template').'/contact/index.html.twig', [
  59.             'form_contact' =>$formContact
  60.         ]);
  61.     }
  62. }