Symfony 4/5 Gedmo StofDoctrineExtensions Slugger (Custom slugger, regenerate slug)
Regenerate slug
-
// That didn't work // $entity->setSlug(null);
Do it manually
-
use Gedmo\Sluggable\Util\Urlizer; $slug = Urlizer::unaccent($entity->getName()); $slug = Urlizer::urlize($slug); $entity->setSlug($slug); $em->persist($entity); $em->flush();
Use a custom slugger
-
src/EventListener/GermanUmlautSluggableListener.php <?php namespace App\EventListener; use Gedmo\Sluggable\SluggableListener; use Gedmo\Sluggable\Util\Urlizer; /** * Create proper german umlaut slugs like Schlößer -> schloesser * @see https://github.com/Guite/MostGenerator/issues/241#issuecomment-22976742 * @see https://github.com/doctrine-extensions/DoctrineExtensions/blob/main/doc/sluggable.md#custom-transliterator */ class GermanUmlautSluggableListener extends SluggableListener { public function __construct() { $callable = function($text, $separator = '-', $object) { $text = Urlizer::unaccent($text); return Urlizer::urlize($text, $separator); }; $this->setTransliterator($callable); } }
-
// config/packages/stof_doctrine_extensions.yaml stof_doctrine_extensions: ... class: sluggable: App\EventListener\GermanUmlautSluggableListener