src/FMT/Application/Twig/RegistrationExtension.php line 92

Open in your IDE?
  1. <?php
  2. namespace FMT\Application\Twig;
  3. use FMT\Domain\Service\UserManagerInterface;
  4. use FMT\Application\FormType\Security\RegistrationDonorType;
  5. use FMT\Application\FormType\Security\RegistrationStudentType;
  6. use Symfony\Component\Form\Form;
  7. use Symfony\Component\Form\FormFactoryInterface;
  8. use Symfony\Component\Form\FormInterface;
  9. use Symfony\Component\Form\FormTypeInterface;
  10. use Symfony\Component\HttpFoundation\Request;
  11. use Symfony\Component\HttpFoundation\RequestStack;
  12. use Twig\Extension\AbstractExtension;
  13. use Twig\TwigFunction;
  14. /**
  15.  * Class RegistrationExtension
  16.  * @package FMT\Application\Twig
  17.  */
  18. class RegistrationExtension extends AbstractExtension
  19. {
  20.     /** @var Request */
  21.     private $request;
  22.     /** @var UserManagerInterface */
  23.     private $manager;
  24.     /** @var FormFactoryInterface */
  25.     private $formFactory;
  26.     /**
  27.      * UserExtension constructor.
  28.      * @param RequestStack $requestStack
  29.      * @param UserManagerInterface $manager
  30.      * @param FormFactoryInterface $formFactory
  31.      */
  32.     public function __construct(
  33.         RequestStack $requestStack,
  34.         UserManagerInterface $manager,
  35.         FormFactoryInterface $formFactory
  36.     ) {
  37.         $this->request $requestStack->getCurrentRequest();
  38.         $this->manager $manager;
  39.         $this->formFactory $formFactory;
  40.     }
  41.     /**
  42.      * @return array
  43.      */
  44.     public function getFunctions()
  45.     {
  46.         return [
  47.             new TwigFunction('get_donor_registration_form', [$this'getDonorRegistrationForm']),
  48.             new TwigFunction('get_student_registration_form', [$this'getStudentRegistrationForm']),
  49.         ];
  50.     }
  51.     /**
  52.      * @return mixed
  53.      */
  54.     public function getDonorRegistrationForm()
  55.     {
  56.         $user $this->manager->makeDonor();
  57.         $form $this->createForm(RegistrationDonorType::class, $user);
  58.         $form->handleRequest($this->request);
  59.         return $form->createView();
  60.     }
  61.     /**
  62.      * @return mixed
  63.      */
  64.     public function getStudentRegistrationForm()
  65.     {
  66.         $user $this->manager->makeStudent();
  67.         $form $this->createForm(RegistrationStudentType::class, $user);
  68.         $form->handleRequest($this->request);
  69.         return $form->createView();
  70.     }
  71.     /**
  72.      * Creates and returns a Form instance from the type of the form.
  73.      *
  74.      * @param string|FormTypeInterface $type The built type of the form
  75.      * @param mixed $data The initial data for the form
  76.      * @param array $options Options for the form
  77.      *
  78.      * @return FormInterface|Form
  79.      */
  80.     protected function createForm($type$data null, array $options = [])
  81.     {
  82.         return $this->formFactory->create($type$data$options);
  83.     }
  84. }