src/Vich/EventSubscriber/MediaUrlResolver.php line 28

  1. <?php
  2. namespace App\Vich\EventSubscriber;
  3. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  4. use Vich\UploaderBundle\Event\Events as VichEvents,
  5.     Vich\UploaderBundle\Event\Event,
  6.     Vich\UploaderBundle\Storage\StorageInterface;
  7. use App\Entity\Interface\UploadableInterface;
  8. final class MediaUrlResolver implements EventSubscriberInterface
  9. {
  10.     private StorageInterface $storage;
  11.     public function __construct(StorageInterface $storage)
  12.     {
  13.         $this->storage $storage;
  14.     }
  15.     public static function getSubscribedEvents(): array
  16.     {
  17.         return [
  18.             VichEvents::POST_UPLOAD => 'resolve',
  19.         ];
  20.     }
  21.     public function resolve(Event $event): void
  22.     {
  23.         $entity $event->getObject();
  24.         if (! $entity instanceof UploadableInterface) {
  25.             return;
  26.         }
  27.         $entity->setUrl($this->storage->resolveUri($entity'file'));
  28.         return;
  29.     }
  30. }