src/Action/ContactAction.php line 17

Open in your IDE?
  1. <?php
  2. declare(strict_types 1);
  3. namespace App\Action;
  4. use App\Domain\Repository\Interfaces\TextRepositoryInterface;
  5. use App\Form\Handler\ContactFormHandler;
  6. use App\Form\Type\ContactFormType;
  7. use App\Responder\RedirectResponder;
  8. use App\Responder\TemplateResponder;
  9. use Symfony\Component\Form\FormFactoryInterface;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\Routing\Annotation\Route;
  12. use Symfony\Contracts\HttpClient\HttpClientInterface;
  13. class ContactAction extends AbstractAction
  14. {
  15.     private $templateResponder;
  16.     private $redirectResponder;
  17.     private $formFactory;
  18.     private $contactFormHandler;
  19.     public function __construct(
  20.         TemplateResponder $templateResponder,
  21.         RedirectResponder $redirectResponder,
  22.         FormFactoryInterface $formFactory,
  23.         ContactFormHandler $contactFormHandler
  24.     )
  25.     {
  26.         $this->templateResponder $templateResponder;
  27.         $this->redirectResponder $redirectResponder;
  28.         $this->formFactory $formFactory;
  29.         $this->contactFormHandler $contactFormHandler;
  30.     }
  31.     /**
  32.      * @Route("/contact", name="contact")
  33.      */
  34.     public function __invoke(Request $request)
  35.     {
  36.         $contactType $this->formFactory
  37.             ->create(ContactFormType::class)
  38.             ->handleRequest($request);
  39.         if ($this->contactFormHandler->handle($contactType)) {
  40.             return $this->redirectResponder->__invoke('contact', ["success" => 1]);
  41.         }
  42.         if($request->query->get('success')){
  43.             $request->getSession()->getFlashBag()->add('success''Votre message a bien été envoyé.');
  44.         }
  45.         return $this->templateResponder->__invoke(
  46.             'contact.html.twig', [
  47.                 'form' => $contactType->createView()
  48.             ]
  49.         );
  50.     }
  51. }