/Slugify

Primary LanguagePHP

Slugify

Le service Slugify permet de convertir une chaine de caractère en slug, il est simple d'utilisation et rapide à mettre en place.
Vous pouvez choisir le séparateur de votre choix, 3 séparateurs sont disponibles *, -, _ , par défaut le - sera insérer en cas de séparateur incorrect ou si aucune option est entrée.

Installation

Copier simplement le fichier slugify dans un service

Usage

paramètre: string
return: string
option: separator => default: "-"


Usage dans un controller symfony:

#[Route('/new', name: 'project_new', methods: ['GET', 'POST'])]
public function new(Request $request, Slugify $slugify): Response
{
  $project = new Project();
  $form = $this->createForm(ProjectType::class, $project);
  $form->handleRequest($request);

  if ($form->isSubmitted() && $form->isValid()) {
     $entityManager = $this->getDoctrine()->getManager();
     
     /** Le nom du projet est récupéré et transformé en slug avant d'être persisté */
     $project->setSlug($slugify->generate($project->getName()));
     $entityManager->persist($project);
     $entityManager->flush();

     $this->addFlash('success', "Sauvegardé avec succès");
     return $this->redirectToRoute('project_index');
  }

  return $this->render('admin/project/new.html.twig', [
     'project' => $project,
     'form' => $form->createView(),
  ]);
}
$slugify->generate("Jérôme Larchet")
// Ouput
// jerome-larchet
$slugify->generate("La route d'où je viens")
// Ouput
// la-route-d-ou-je-viens
$slugify->generate("Les 2 chats qui buvaient !", "_")
// Ouput
// les_2_chats_qui_buvaient
$slugify->generate("La guerre des étoiles", "*")
// Ouput
// la*guerre*des*etoiles