<?php
namespace App\Auction\EventSubscriber;
use App\Core\Service\Slugger;
use Pimcore\Event\DataObjectEvents;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Model\DataObject\Auction;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class AuctionSlugSubscriber implements EventSubscriberInterface
{
protected $slugger;
public function __construct(Slugger $slugger)
{
$this->slugger = $slugger;
}
/**
* {@inheritdoc}
*/
public static function getSubscribedEvents()
{
return [
DataObjectEvents::PRE_UPDATE => 'onPreUpdateObject',
];
}
public function onPreUpdateObject(DataObjectEvent $event)
{
$object = $event->getObject();
$className = (new \ReflectionClass($object))->getShortName();
if (!in_array($className, ['Auction'])) {
return;
}
if (!$object instanceof Auction) {
throw new \Exception(sprintf('%s is neither of the type race or auction', get_class($object)), 1);
}
$title = $object->getTitle();
$object->setSlug($this->slugger->slugify($title));
}
}