src/Event/Subscriber/Admin/CrudFlashMessage.php line 65

Open in your IDE?
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Event\Subscriber\Admin;
  4. use App\Service\Admin\CrudFlashMessage\PublisherInterface;
  5. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterCrudActionEvent;
  6. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityDeletedEvent;
  7. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityPersistedEvent;
  8. use EasyCorp\Bundle\EasyAdminBundle\Event\AfterEntityUpdatedEvent;
  9. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  10. use Symfony\Component\Form\Form;
  11. use Symfony\Component\HttpFoundation\RequestStack;
  12. class CrudFlashMessage implements EventSubscriberInterface
  13. {
  14.     private PublisherInterface $publisher;
  15.     private RequestStack $requestStack;
  16.     /**
  17.      * CrudFlashMessage constructor.
  18.      */
  19.     public function __construct(PublisherInterface $publisherRequestStack $requestStach)
  20.     {
  21.         $this->publisher $publisher;
  22.         $this->requestStack $requestStach;
  23.     }
  24.     public static function getSubscribedEvents()
  25.     {
  26.         return [
  27.             AfterEntityUpdatedEvent::class => ['onAfterUpdated'],
  28.             AfterEntityPersistedEvent::class => ['onAfterPersisted'],
  29.             AfterEntityDeletedEvent::class => ['onAfterDeleted'],
  30.             AfterCrudActionEvent::class => ['onAfterCrudAction'],
  31.         ];
  32.     }
  33.     public function onAfterUpdated(AfterEntityUpdatedEvent $event): void
  34.     {
  35.         $request $this->requestStack->getMainRequest();
  36.         if ($request && !$request->isXmlHttpRequest()) {
  37.             $this->publisher->publishForUpdated($event->getEntityInstance());
  38.         }
  39.     }
  40.     public function onAfterPersisted(AfterEntityPersistedEvent $event): void
  41.     {
  42.         $request $this->requestStack->getMainRequest();
  43.         if ($request && !$request->isXmlHttpRequest()) {
  44.             $this->publisher->publishForPersisted($event->getEntityInstance());
  45.         }
  46.     }
  47.     public function onAfterDeleted(AfterEntityDeletedEvent $event): void
  48.     {
  49.         $request $this->requestStack->getMainRequest();
  50.         if ($request && !$request->isXmlHttpRequest()) {
  51.             $this->publisher->publishForDeleted($event->getEntityInstance());
  52.         }
  53.     }
  54.     public function onAfterCrudAction(AfterCrudActionEvent $event): void
  55.     {
  56.         $params $event->getResponseParameters();
  57.         if (!$params) {
  58.             return;
  59.         }
  60.         $form null;
  61.         foreach ($params->all() as $key => $value) {
  62.             if (!$value instanceof Form) {
  63.                 continue;
  64.             }
  65.             if ($value->isSubmitted() && !$value->isValid()) {
  66.                 $this->publisher->publishForValidationError($value->getData());
  67.                 break;
  68.             }
  69.         }
  70.     }
  71. }