<?php
namespace App\Race\EventSubscriber;
use App\Core\Service\Slugger;
use Pimcore\Event\DataObjectEvents;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Model\DataObject\Race;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class RaceSlugSubscriber 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, ['Race'])) {
return;
}
if (!$object instanceof Race) {
throw new \Exception('object is not a race ', 1);
}
$name = $object->getName();
$object->setSlug($this->slugger->slugify($name));
}
}