src/App/Controller/StaticPage/ContactController.php line 21

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace App\Controller\StaticPage;
  3. use App\Email\Contact;
  4. use App\Form\Type\ContactType;
  5. use Sindrive\EmailSenderBundle\Service\EmailSender;
  6. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  7. use Symfony\Component\HttpFoundation\Request;
  8. use Symfony\Component\HttpFoundation\Response;
  9. use Symfony\Component\HttpFoundation\Session\Session;
  10. use Symfony\Contracts\Translation\TranslatorInterface;
  11. class ContactController extends AbstractController
  12. {
  13.     private EmailSender $sender;
  14.     private TranslatorInterface $translator;
  15.     public function form(Request $request): Response
  16.     {
  17.         $form $this->createForm(ContactType::class);
  18.         $form->handleRequest($request);
  19.         if ($form->isSubmitted() && $form->isValid()) {
  20.             /** @var array{text: string, subject: string, name: string, email: string} $data */
  21.             $data $form->getData();
  22.             $this->sender->sendType(new Contact($data));
  23.             $message $this->translator->trans('contact.message', [], 'static_pages');
  24.             /** @var Session $session */
  25.             $session $request->getSession();
  26.             $session->getFlashBag()->add('success_messages'$message);
  27.             return $this->redirectToRoute('contact');
  28.         }
  29.         return $this->render('static/contact.html.twig', ['form' => $form->createView()]);
  30.     }
  31.     /**
  32.      * @required
  33.      */
  34.     public function setSender(EmailSender $sender): void
  35.     {
  36.         $this->sender $sender;
  37.     }
  38.     /**
  39.      * @required
  40.      */
  41.     public function setTranslator(TranslatorInterface $translator): void
  42.     {
  43.         $this->translator $translator;
  44.     }
  45. }