src/EventSubscriber/Game/UpdateGameSeedsSubscriber.php line 26

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber\Game;
  3. use App\Entity\Game;
  4. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityPersistedEvent;
  5. use EasyCorp\Bundle\EasyAdminBundle\Event\BeforeEntityUpdatedEvent;
  6. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  7. use Symfony\Component\HttpFoundation\File\UploadedFile;
  8. use Symfony\Component\HttpFoundation\RequestStack;
  9. class UpdateGameSeedsSubscriber implements EventSubscriberInterface
  10. {
  11.     public function __construct(private RequestStack $requestStack)
  12.     {
  13.     }
  14.     public static function getSubscribedEvents(): array
  15.     {
  16.         return [
  17.             BeforeEntityUpdatedEvent::class   => ['setGameSeeds'],
  18.             BeforeEntityPersistedEvent::class => ['setGameSeeds'],
  19.         ];
  20.     }
  21.     public function setGameSeeds(BeforeEntityUpdatedEvent|BeforeEntityPersistedEvent $event): void
  22.     {
  23.         $entity $event->getEntityInstance();
  24.         if (!($entity instanceof Game)) {
  25.             return;
  26.         }
  27.         $request $this->requestStack->getMainRequest();
  28.         if (!isset($request->files->get('Game')['seeds'])) {
  29.             return;
  30.         }
  31.         $uploadedFile $request->files->get('Game')['seeds'];
  32.         if (!($uploadedFile instanceof UploadedFile)) {
  33.             return;
  34.         }
  35.         $seeds str_replace(chr(10), ''$uploadedFile->getContent()); // remove "\n" from file content
  36.         $seedsArray explode(','$seeds);
  37.         $entity->setSeeds($seedsArray);
  38.     }
  39. }