SluggerService.php 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. <?php
  2. // src/Service/SluggerService.php
  3. namespace App\Service;
  4. use App\Entity\Article;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\String\Slugger\SluggerInterface;
  7. class SluggerService
  8. {
  9. public function __construct(
  10. protected readonly EntityManagerInterface $entityManager,
  11. protected readonly SluggerInterface $slugger)
  12. {
  13. }
  14. public function generateSlugsForExistingArticles()
  15. {
  16. $articles = $this->entityManager->getRepository(Article::class)->findAll();
  17. foreach ($articles as $article) {
  18. $slug = $this->slugger->slug($article->getTitle())->lower();
  19. $existingSlug = $slug;
  20. // Vérification des conflits
  21. $count = 1;
  22. while ($this->entityManager->getRepository(Article::class)->findOneBy(['slug' => $existingSlug])) {
  23. $existingSlug = $slug . '-' . $count;
  24. $count++;
  25. }
  26. $article->setSlug($existingSlug);
  27. $this->entityManager->persist($article);
  28. }
  29. $this->entityManager->flush();
  30. }
  31. }