src/Auction/EventSubscriber/AuctionSlugSubscriber.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\Auction\EventSubscriber;
  3. use App\Core\Service\Slugger;
  4. use Pimcore\Event\DataObjectEvents;
  5. use Pimcore\Event\Model\DataObjectEvent;
  6. use Pimcore\Model\DataObject\Auction;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class AuctionSlugSubscriber implements EventSubscriberInterface
  9. {
  10.   protected $slugger;
  11.   public function __construct(Slugger $slugger)
  12.   {
  13.     $this->slugger $slugger;
  14.   }
  15.   /**
  16.    * {@inheritdoc}
  17.    */
  18.   public static function getSubscribedEvents()
  19.   {
  20.     return [
  21.       DataObjectEvents::PRE_UPDATE => 'onPreUpdateObject',
  22.     ];
  23.   }
  24.   public function onPreUpdateObject(DataObjectEvent $event)
  25.   {
  26.     $object $event->getObject();
  27.     $className = (new \ReflectionClass($object))->getShortName();
  28.     if (!in_array($className, ['Auction'])) {
  29.       return;
  30.     }
  31.     if (!$object instanceof Auction) {
  32.       throw new \Exception(sprintf('%s is neither of the type race or auction'get_class($object)), 1);
  33.     }
  34.     $title $object->getTitle();
  35.     $object->setSlug($this->slugger->slugify($title));
  36.   }
  37. }