src/News/EventSubscriber/NewsSlugSubscriber.php line 30

Open in your IDE?
  1. <?php
  2. namespace App\News\EventSubscriber;
  3. use App\Core\Service\Slugger;
  4. use Pimcore\Event\DataObjectEvents;
  5. use Pimcore\Event\Model\DataObjectEvent;
  6. use Pimcore\Model\DataObject\News;
  7. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  8. class NewsSlugSubscriber 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, ['News'])) {
  29.       return;
  30.     }
  31.     if (!$object instanceof News) {
  32.       throw new \Exception(sprintf('%s is not of type News'get_class($object)), 1);
  33.     }
  34.     $languages \Pimcore\Tool::getValidLanguages();
  35.     foreach ($languages as $language) {
  36.       try {
  37.         $name $object->getName($language);
  38.         $object->setSlug($this->slugger->slugify($name), $language);
  39.       } catch (\Throwable $th) {
  40.         dd([$language$name]);
  41.       }
  42.     }
  43.   }
  44. }