src/Controller/ContactController.php line 94

  1. <?php
  2. namespace App\Controller;
  3. use App\Form\DevisType;
  4. use App\Repository\DevisRepository;
  5. use Symfony\Component\Mailer\Mailer;
  6. use Symfony\Component\Mailer\Transport;
  7. use Symfony\Bridge\Twig\Mime\TemplatedEmail;
  8. use Symfony\Component\HttpFoundation\Request;
  9. use Symfony\Component\Mailer\MailerInterface;
  10. use Symfony\Component\HttpFoundation\Response;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use App\Entity\Devis;
  13. use App\Repository\PartnerRepository;
  14. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  15. use Doctrine\ORM\EntityManagerInterface
  16. use Twig\Environment;
  17. class ContactController extends AbstractController
  18. {
  19.     private $twig
  20.  
  21.     public function __construct(Environment $twig)
  22.     {
  23.         $this->twig $twig;
  24.     }
  25.     #[Route('/contact'name'app_contact')]
  26.     public function index(Request $requestMailerInterface $mailerEntityManagerInterface $entityManager): Response
  27.     {
  28.         $message = new Devis();
  29.         $form $this->createForm(DevisType::class, $message);
  30.         $form->handleRequest($request);
  31.         if ($form->isSubmitted() && $form->isValid()) {
  32.             $entityManager->persist($message);
  33.             $entityManager->flush();
  34.             $transport Transport::fromDsn('smtp://siteweb@guardianfrance.fr:DL3FH4M8p6u4W@smtp.ionos.fr:587?auth_mode=login');
  35.             $mailer = new Mailer($transport);
  36.             $emailData = [
  37.                 'firstname' => $message->getFirstName(),
  38.                 'name' => $message->getName(),
  39.                 'email_address' => $message->getEmail(),
  40.                 'phone' => $message->getPhone(),
  41.                 'society' => $message->getSociety(),
  42.                 'city' => $message->getCity(),
  43.                 'adresse' => $message->getAdresse(),
  44.                 'zip' => $message->getZip(),
  45.                 'services' => $message->getServices(),
  46.                 'subject' => $message->getSubject(),
  47.             ];
  48.             $email = (new TemplatedEmail())
  49.             ->from('siteweb@guardianfrance.fr')
  50.             ->to('contact@guardianfrance.fr'
  51.             ->subject('Demande de contact depuis le Guardian France.fr')
  52.             ->htmlTemplate('email/contact.html.twig')
  53.             ->context(['emailData' => $emailData]);
  54.         $htmlContent $this->twig->render('email/contact.html.twig', ['emailData' => $emailData]);
  55.         $email->html($htmlContent);
  56.      
  57.         $mailer->send($email);
  58.         // Ajouter un message flash de succès
  59.         $this->addFlash('success'' Guardian France vous répondra dans les meilleurs délais.');
  60.         
  61.         return $this->redirectToRoute('app_contact');
  62.     } else {
  63.         // Ajouter un message flash d'erreur
  64.         $this->addFlash('error''Une erreur s\'est produite lors de l\'envoi du message.');
  65.     }
  66.     // ...
  67.         return $this->render('contact/index.html.twig', [
  68.             'controller_name' => 'ContactController',
  69.             'form' => $form->createView()
  70.         ]);
  71.     }
  72.     
  73.     #[Route('/devis'name'app_devis')]
  74.     public function devis(Request $request,PartnerRepository $partnerRepositoryMailerInterface $mailerEntityManagerInterface $entityManager,DevisRepository $DevisRepository,): Response
  75.     {
  76.         $message = new Devis();
  77.         $form $this->createForm(DevisType::class, $message);
  78.         $form->handleRequest($request);
  79.         if ($form->isSubmitted() && $form->isValid()) {
  80.             $entityManager->persist($message);
  81.             $entityManager->flush();
  82.             $transport Transport::fromDsn('smtp://siteweb@guardianfrance.fr:DL3FH4M8p6u4W@smtp.ionos.fr:587?auth_mode=login');
  83.             $mailer = new Mailer($transport);
  84.             $emailData = [
  85.                 'firstname' => $message->getFirstName(),
  86.                 'name' => $message->getName(),
  87.                 'email_address' => $message->getEmail(),
  88.                 'phone' => $message->getPhone(),
  89.                 'society' => $message->getSociety(),
  90.                 'city' => $message->getCity(),
  91.                 'adresse' => $message->getAdresse(),
  92.                 'zip' => $message->getZip(),
  93.                 'services' => $message->getServices(),
  94.                 'subject' => $message->getSubject(),
  95.             ];
  96.             $email = (new TemplatedEmail())
  97.             ->from('siteweb@guardianfrance.fr')
  98.             ->to('contact@guardianfrance.fr'
  99.             ->subject('Demande de contact depuis le Guardian France.fr')
  100.             ->htmlTemplate('email/contact.html.twig')
  101.             ->context(['emailData' => $emailData]);
  102.         $htmlContent $this->twig->render('email/contact.html.twig', ['emailData' => $emailData]);
  103.         $email->html($htmlContent);
  104.      
  105.         $mailer->send($email);
  106.         // Ajouter un message flash de succès
  107.         $this->addFlash('success'' Guardian France vous répondra dans les meilleurs délais.');
  108.         
  109.         return $this->redirectToRoute('app_devis');
  110.     } else {
  111.         // Ajouter un message flash d'erreur
  112.         $this->addFlash('error''Une erreur s\'est produite lors de l\'envoi du message.');
  113.     }
  114.     // ...
  115.         return $this->render('contact/devis/index.html.twig', [
  116.             'controller_name' => 'ContactController',
  117.             'partners' => $partnerRepository->findAll(),
  118.             'form' => $form,
  119.         ]);
  120.     }
  121. }