src/Controller/ContactController.php line 28

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Message\MailContactNotification;
  4. use App\Repository\ContactMessageRepository;
  5. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  6. use Symfony\Component\HttpFoundation\RedirectResponse;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\Messenger\MessageBusInterface;
  10. use Symfony\Component\Routing\Annotation\Route;
  11. use App\Entity\ContactMessage;
  12. use App\Form\ContactType;
  13. class ContactController extends AbstractController
  14. {
  15.     private ContactMessageRepository $contactMessageRepository;
  16.     private MessageBusInterface $bus;
  17.     public function __construct(ContactMessageRepository $contactMessageRepositoryMessageBusInterface $bus)
  18.     {
  19.         $this->contactMessageRepository $contactMessageRepository;
  20.         $this->bus $bus;
  21.     }
  22.     #[Route('/contact'name'contact')]
  23.     public function index(Request $request): RedirectResponse|Response
  24.     {
  25.         $contact = new ContactMessage();
  26.         $form $this->createForm(ContactType::class, $contact);
  27.         $form->handleRequest($request);
  28.         if ($form->isSubmitted() && $form->isValid()) {
  29.             $contact $form->getData();
  30.             $this->contactMessageRepository->add($contacttrue);
  31.             $type "success";
  32.             $message "Votre message a été correctement envoyé.";
  33.             $this->bus->dispatch(
  34.                 new MailContactNotification(
  35.                     $contact->getMail(),
  36.                     $contact->getSubject(),
  37.                     $contact->getMessage(),
  38.                     $contact->getName(),
  39.                     $contact->getFirstname()
  40.                 )
  41.             );
  42.             $this->addFlash($type$message);
  43.             return $this->redirectToRoute('contact');
  44.         }
  45.         return $this->render('clientWeb/contact.html.twig', [
  46.             'formContact' => $form->createView(),
  47.         ]);
  48.     }
  49. }