Générer un slug avec le composant Symfony string
Publié le 11/10/2022 • Actualisé le 11/10/2022
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