src/EventSubscriber/CountryAndRegionsEventSubscriber.php line 34

Open in your IDE?
  1. <?php
  2. namespace App\EventSubscriber;
  3. use App\Model\AbstractCountryAndRegions;
  4. use Pimcore\Event\DataObjectEvents;
  5. use Pimcore\Model\DataObject\CountryAndRegions;
  6. use Pimcore\Event\Model\DataObjectEvent;
  7. use Pimcore\Model\DataObject\Service;
  8. use Symfony\Component\EventDispatcher\EventSubscriberInterface;
  9. class CountryAndRegionsEventSubscriber implements EventSubscriberInterface
  10. {
  11.     public static function getSubscribedEvents()
  12.     {
  13.         return [
  14.             DataObjectEvents::PRE_UPDATE => [
  15.                 ['updateKey'10],
  16.                 ['updatePath'9],
  17.                 ['validate'9]
  18.             ]
  19.         ];
  20.     }
  21.     private function isResponsibleFor(DataObjectEvent $event): bool
  22.     {
  23.         if ($event->getObject() instanceof CountryAndRegions) {
  24.             return true;
  25.         }
  26.         return false;
  27.     }
  28.     public function updateKey(DataObjectEvent $event)
  29.     {
  30.         if (!$this->isResponsibleFor($event)) {
  31.             return;
  32.         }
  33.         /** @var CountryAndRegions */
  34.         $object $event->getObject();
  35.         $countryCode $object->getCountry();
  36.         $object->setKey($countryCode);
  37.     }
  38.     public function updatePath(DataObjectEvent $event)
  39.     {
  40.         if (!$this->isResponsibleFor($event)) {
  41.             return;
  42.         }
  43.         /** @var CountryAndRegions */
  44.         $object $event->getObject();
  45.         $parentFolder Service::createFolderByPath(AbstractCountryAndRegions::FOLDER_PATH);
  46.         $object->setParent($parentFolder);
  47.     }
  48.     public function validate(DataObjectEvent $event)
  49.     {
  50.         if (!$this->isResponsibleFor($event)) {
  51.             return;
  52.         }
  53.         /** @var CountryAndRegions */
  54.         $object $event->getObject();
  55.     }
  56. }