<?php
namespace App\EventSubscriber;
use App\Model\AbstractCountryAndRegions;
use Pimcore\Event\DataObjectEvents;
use Pimcore\Model\DataObject\CountryAndRegions;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Model\DataObject\Service;
use Symfony\Component\EventDispatcher\EventSubscriberInterface;
class CountryAndRegionsEventSubscriber implements EventSubscriberInterface
{
public static function getSubscribedEvents()
{
return [
DataObjectEvents::PRE_UPDATE => [
['updateKey', 10],
['updatePath', 9],
['validate', 9]
]
];
}
private function isResponsibleFor(DataObjectEvent $event): bool
{
if ($event->getObject() instanceof CountryAndRegions) {
return true;
}
return false;
}
public function updateKey(DataObjectEvent $event)
{
if (!$this->isResponsibleFor($event)) {
return;
}
/** @var CountryAndRegions */
$object = $event->getObject();
$countryCode = $object->getCountry();
$object->setKey($countryCode);
}
public function updatePath(DataObjectEvent $event)
{
if (!$this->isResponsibleFor($event)) {
return;
}
/** @var CountryAndRegions */
$object = $event->getObject();
$parentFolder = Service::createFolderByPath(AbstractCountryAndRegions::FOLDER_PATH);
$object->setParent($parentFolder);
}
public function validate(DataObjectEvent $event)
{
if (!$this->isResponsibleFor($event)) {
return;
}
/** @var CountryAndRegions */
$object = $event->getObject();
}
}