Générer un slug avec le composant Symfony string

Publié le 11/10/2022 • Actualisé le 11/10/2022


English language detected! 🇬🇧

  We noticed that your browser is using English. Do you want to read this post in this language?

Read the english version 🇬🇧 Close

Dans ce bout de code, nous voyons comment générer un slug avec le composant Symfony string. D'habitude quand on utilise le composant string de Symfony, on se sert du raccourci u(). Pas dans ce cas, on a une classe dédiée à ce sujet. Elle s'utilise facilement et n'a pas de dépendances. Le paramètre le plus commun, le séparateur, est disponible en tant que second argument de la fonction slug(). On peut aussi utiliser le typage SluggerInterface pour récupérer le service. Attention, la chaîne obtenue n'est pas en minuscule par défaut. Pour vos entité, vous pouvez utiliser l'extension Sluggable (lien "plus le web" ci-dessous) qui est commode à utiliser.


<?php

declare(strict_types=1);

namespace App\Controller\Snippet;

use Symfony\Component\String\Slugger\AsciiSlugger;

/**
 * J'utilise un trait PHP afin d'isoler chaque snippet dans un fichier.
 * Ce code doit être apellé d'un contrôleur Symfony étendant AbstractController (depuis Symfony 4.2)
 * ou Symfony\Bundle\FrameworkBundle\Controller\Controller (Symfony <= 4.1).
 * Les services sont injectés dans le constructeur du contrôleur principal.
 */
trait Snippet222Trait
{
    public function snippet222(): void
    {
        $slugger = new AsciiSlugger(); // you can type-hint SluggerInterface to get slugger as a service
        $articleTitle = 'Generating a slug with the Symfony string component';

        $slug = $slugger->slug($articleTitle)->lower();
        echo $slug.PHP_EOL;

        $slug = $slugger->slug($articleTitle, '_')->lower();
        echo $slug.PHP_EOL;

        // That's it! 😁
    }
}

 Exécuter le snippet  Plus sur Stackoverflow   Lire la doc  Plus sur le web  Snippet aléatoire

  Travaillez avec moi !