src/V4/EventSubscriber/CustomEventTrigger/CustomEventTriggerPreSubmitSubscriber.php line 49

Open in your IDE?
  1. <?php
  2. namespace App\V4\EventSubscriber\CustomEventTrigger;
  3. use App\V4\Builder\CustomEventTrigger\CustomEventTriggerBuilder;
  4. use App\V4\Entity\CustomEventTrigger;
  5. use App\V4\Repository\CustomEventTriggerRepository;
  6. use App\V4\Transformer\FQCNToShortNameTransformer;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. use Symfony\Component\Form\FormEvent;
  9. use Symfony\Component\Form\FormEvents;
  10. class CustomEventTriggerPreSubmitSubscriber implements EventSubscriberInterface
  11. {
  12.     /**
  13.      * @var CustomEventTriggerRepository
  14.      */
  15.     private $customEventTriggerRepository;
  16.     /**
  17.      * @var CustomEventTriggerBuilder
  18.      */
  19.     private $customEventTriggerBuilder;
  20.     /**
  21.      * @param CustomEventTriggerRepository $customEventTriggerRepository
  22.      * @param CustomEventTriggerBuilder    $customEventTriggerBuilder
  23.      */
  24.     public function __construct(
  25.         CustomEventTriggerRepository $customEventTriggerRepository,
  26.         CustomEventTriggerBuilder $customEventTriggerBuilder
  27.     ) {
  28.         $this->customEventTriggerRepository $customEventTriggerRepository;
  29.         $this->customEventTriggerBuilder $customEventTriggerBuilder;
  30.     }
  31.     public static function getSubscribedEvents(): array
  32.     {
  33.         return [
  34.             FormEvents::PRE_SUBMIT => 'onPreSubmit',
  35.         ];
  36.     }
  37.     /**
  38.      * @param FormEvent $event
  39.      *
  40.      * @return void
  41.      */
  42.     public function onPreSubmit(FormEvent $event): void
  43.     {
  44.         $data $event->getData();
  45.         $customEventTriggers $this
  46.             ->customEventTriggerRepository
  47.             ->searchByEntityAndWhenApply(
  48.                 (new FQCNToShortNameTransformer())->transform($event->getForm()->getConfig()->getDataClass()),
  49.                 CustomEventTrigger::WHEN_PRE_SUBMIT
  50.             )
  51.         ;
  52.         foreach ($customEventTriggers as $customEventTrigger) {
  53.             $data $this
  54.                 ->customEventTriggerBuilder
  55.                 ->getBuilder($data$customEventTrigger)
  56.                 ->apply($data$customEventTrigger)
  57.             ;
  58.         }
  59.         $event->setData($data);
  60.     }
  61. }