<?php
namespace App\EventListener;
use Pimcore\Event\Model\ElementEventInterface;
use Pimcore\Event\Model\DataObjectEvent;
use Pimcore\Model\DataObject\Data\UrlSlug;
use Symfony\Component\String\Slugger\AsciiSlugger;
class FixslugEventListener
{
public function onPostUpdate(ElementEventInterface $e){
if ($e instanceof DataObjectEvent) {
$object = $e->getObject();
if (!$e->hasArgument("saveVersionOnly")) {
if ($object instanceof \Pimcore\Model\DataObject\Product) {
$current_url = $object->getUrl();
if (is_array($current_url) && isset($current_url[0]) && $current_url[0]->getSlug() != '') {
//slug presente
} else {
$this->saveNewSlug($object, $object->getKey() , ['it' => 'prodotto', 'en' => 'product']);
}
}
}
}
}
public function saveNewSlug($object, $string, $prefix){
$locals = ['it', 'en'];
if($string != '') {
foreach($locals as $local) {
$slugger = new AsciiSlugger();
$slug = "/" . $local . "/" . $prefix[$local] . "/" . strtolower($slugger->slug($string));
$urlSlug = new UrlSlug($slug);
$object->setUrl([$urlSlug], $local);
}
$object->save();
}
}
}