Github

Laravel et les Slugs : Pourquoi Choisir un Slug plutît qu'un ID dans l'URL ? 🌐✹

Publié il y a 1 mois

Lorsque vous dĂ©veloppez une application web avec Laravel, l'une des pratiques essentielles est de rendre les URLs de vos pages plus conviviales et accessibles. Une technique couramment utilisĂ©e pour y parvenir est l'intĂ©gration de slugs plutĂŽt que des identifiants numĂ©riques (ID) dans les URLs. Mais pourquoi privilĂ©gier un slug plutĂŽt qu'un ID ? Et quelles sont les diffĂ©rences entre ces deux mĂ©thodes ? Cet article vous aide Ă  mieux comprendre ces deux concepts Ă  travers des exemples concrets avec Laravel. 🚀

Qu'est-ce qu'un Slug ? 📜

Un slug est une version lisible d’un titre ou d'un nom dans l'URL. Par exemple, au lieu d'une URL gĂ©nĂ©rique comme celle-ci :

 https://exemple.com/post/1

Vous pouvez avoir une URL plus descriptive :

https://exemple.com/post/comment-creer-un-slug-laravel

Cela permet non seulement Ă  vos utilisateurs de mieux comprendre le contenu de la page, mais aussi aux moteurs de recherche de mieux indexer vos pages.

Pourquoi Utiliser un Slug plutît qu'un ID ? 🔍

Voici les principales raisons pour lesquelles l'utilisation d'un slug dans l'URL est plus avantageuse par rapport à l'utilisation d'un ID numérique :

  • LisibilitĂ© : Un slug est plus facilement comprĂ©hensible par les humains. L'URL devient plus informative, ce qui est utile pour l'utilisateur ainsi que pour les moteurs de recherche.
  • SEO (Search Engine Optimization) : Les slugs peuvent ĂȘtre optimisĂ©s pour le SEO en incluant des mots-clĂ©s pertinents. Par exemple, un slug comme meilleures-recettes-pizza sera mieux indexĂ© par Google qu'un simple 1.
  • AccessibilitĂ© : Un slug offre plus de contexte sur la page Ă  laquelle il fait rĂ©fĂ©rence, rendant l'URL plus accessible pour un utilisateur moyen.

DiffĂ©rence entre ID et Slug dans l'URL âšĄïž

URL avec ID :

Exemple d'URL :

https://exemple.com/post/1

L'URL contient l'ID du post, mais elle ne fournit aucune indication sur le contenu de la page.

URL avec Slug :

Exemple d'URL :

https://exemple.com/post/mon-article-enfant

L'URL contient un slug descriptif, facilitant la compréhension du contenu de la page, ce qui améliore l'expérience utilisateur et le SEO.

Comment CrĂ©er un Slug dans Laravel đŸ› ïž

Laravel dispose d'une fonctionnalité intégrée pour générer automatiquement des slugs à partir de titres ou d'autres champs textuels. Voici comment procéder.

1. Ajouter un Slug au ModĂšle

Tout d'abord, nous devons ajouter un champ slug à notre modÚle Post. Vous pouvez générer une migration pour ajouter cette colonne à la table des posts.

php artisan make:migration add_slug_to_posts_table --table=posts

Dans la migration générée, ajoutez la colonne slug :

// database/migrations/xxxx_xx_xx_xxxxxx_add_slug_to_posts_table.php
public function up()
{
    Schema::table('posts', function (Blueprint $table) {
        $table->string('slug')->unique()->after('title');
    });
}

Ensuite, exécutez la migration :

php artisan migrate

2. Générer un Slug Lors de la Création d'un Post

Vous pouvez utiliser la bibliothÚque Str de Laravel pour générer un slug automatiquement à partir du titre du post. Voici comment faire cela dans le modÚle Post.

// app/Models/Post.php
namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Illuminate\Support\Str;

class Post extends Model
{
    protected $fillable = ['title', 'content', 'slug'];

    // Créer un slug automatiquement avant la création du post
    public static function boot()
    {
        parent::boot();

        static::creating(function ($post) {
            $post->slug = Str::slug($post->title);
        });
    }
}

Cette méthode garantit que chaque fois qu'un post est créé, un slug est généré automatiquement à partir du titre.

3. Générer un Slug Unique

Pour éviter les conflits de slugs, vous pouvez ajouter une vérification pour rendre chaque slug unique. Voici une version améliorée de la fonction boot :

// app/Models/Post.php
public static function boot()
{
    static::creating(function ($post) {
        // Générer un slug à partir du titre
        $slug = Str::slug($post->title);

        // Vérifier si le slug existe déjà et ajouter un suffixe
        $count = Post::where('slug', $slug)->count();
        if ($count) {
            $slug .= '-' . ($count + 1);
        }

        $post->slug = $slug;
    });
}

Cette mĂ©thode permet de garantir que chaque slug sera unique, mĂȘme si deux titres sont identiques.

Exemple Pratique avec Laravel đŸ’»

Imaginons que nous avons un modÚle Post et que nous souhaitons afficher un article via son slug plutÎt que son ID. Voici comment procéder dans Laravel.

1. Création de la Vue :

<!-- resources/views/post.blade.php -->
<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>{{ $post->title }}</title>
</head>
<body>
    <h1>{{ $post->title }}</h1>
    <p>{{ $post->content }}</p>
</body>
</html>

2. Création du ContrÎleur :

// app/Http/Controllers/PostController.php
namespace App\Http\Controllers;

use App\Models\Post;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function show($slug)
    {
        // Récupérer l'article en fonction du slug
        $post = Post::where('slug', $slug)->firstOrFail();

        // Retourner la vue avec l'article
        return view('post', ['post' => $post]);
    }
}

3. DĂ©finition des Routes :

// routes/web.php
use App\Http\Controllers\PostController;

Route::get('/post/{slug}', [PostController::class, 'show']);

4. Création de l'URL :

Lorsque vous accédez à l'URL https://exemple.com/post/mon-article-enfant, Laravel recherchera un article dont le slug est mon-article-enfant et l'affichera dans la vue.

Conclusion ✹

Utiliser des slugs dans vos URLs est une excellente pratique pour rendre votre application web plus accessible, lisible et optimisĂ©e pour les moteurs de recherche. Contrairement Ă  un ID qui se contente de pointer vers un enregistrement dans la base de donnĂ©es, un slug offre plus de contexte et amĂ©liore l'expĂ©rience utilisateur. Avec Laravel, mettre en Ɠuvre cette fonctionnalitĂ© est simple grĂące aux contrĂŽleurs, vues et routes.

N'oubliez pas de gĂ©nĂ©rer des slugs uniques pour Ă©viter les conflits, et assurez-vous que vos routes et contrĂŽleurs sont correctement configurĂ©s pour gĂ©rer ce type d'URL. 💡


Salem Nkwey

Salem Nkwey

DĂ©veloppeur Web et mobile, je suis ouvert Ă  toutes nouvelles expĂ©riences, je m'adapte facilement aux situations prĂ©sentes et si vous me faites confiance je rembourserai cela par un travail bien accompli. Vous avez une idĂ©e d'une application en tĂȘte ? Dites le moi et je vous le concrĂ©tise dans le temps.

conseil

L'Évolution du DĂ©ploiement Web : De FileZilla au CI/CD avec GitHub

Mettre un site en ligne a toujours Ă©tĂ© une Ă©tape clĂ© pour les dĂ©veloppeurs. Si aujourd’hui le dĂ©ploiement est rapide et automatisĂ© grĂące aux pipelines CI/CD et aux plateformes comme GitHub Actions, il n’en a pas toujours Ă©tĂ© ainsi.

Salem Nkwey

Salem Nkwey

241

|

il y a 1 mois

HĂ©bergement

HĂ©berger une application Laravel sur Vercel

Etant que développeur ou étudiant il est crucial d'avoir une solution solution fiable, performante et gratuite pour tester le fonctionnement des applications en ligne pour se faire dans cet article nous allons voir comment héberger une application laravel sur Vercel

Salem Nkwey

Salem Nkwey

420

|

il y a 4 mois

Les priorités concurrentielles : un levier pour se démarquer et croßtre !

Dans un marché ultra-concurrentiel, se démarquer est essentiel. Et si vous faisiez des priorités concurrentielles votre atout stratégique ?

Chadrack Kanza

Chadrack Kanza

507

|

il y a 4 mois

Filament

Formation ComplĂšte en Filament PHP : CrĂ©ez des Interfaces d’Administration Performantes et Personnalisables

Dans le monde du dĂ©veloppement, savoir crĂ©er des interfaces d’administration modernes et intuitives est un atout clĂ©. C’est prĂ©cisĂ©ment l’objectif de notre formation complĂšte en Filament PHP : former les dĂ©veloppeurs Ă  construire des dashboards performants et personnalisĂ©s, tout en optimisant leur temps et leur productivitĂ©.

Chadrack Kanza

Chadrack Kanza

608

|

il y a 4 mois

Github

Mettre votre code sur GitHub : Guide Ă©tape par Ă©tape pour votre premier commit

Dans cette deuxiÚme partie, nous allons voir comment mettre votre code sur GitHub en faisant votre premier commit. Nous détaillerons les étapes depuis la création d'un compte GitHub jusqu'à l'utilisation des commandes essentielles de Git : git add, git commit et git push.

Salem Nkwey

Salem Nkwey

964

|

il y a 5 mois

gestion de projet

Projet, programme ou portfolio : quelle est la différence ?

Lorsqu'on parle de gestion de projet, on entend souvent les termes "projet", "programme" et "portfolio". Bien qu'ils soient liés, ces trois concepts se distinguent les uns des autres. Comprenons mieux leurs différences.

Chadrack Kanza

Chadrack Kanza

659

|

il y a 8 mois

gestion de projet

Les compétences interpersonnelles, clés du succÚs en management de projet

En tant que gestionnaire de projet, vos compétences techniques et votre expertise sont essentielles. Mais ce qui fait vraiment la différence, ce sont vos compétences interpersonnelles. Elles vous permettent de bùtir des relations solides avec votre équipe et les parties prenantes, menant ainsi à la réussite de vos projets.

Chadrack Kanza

Chadrack Kanza

906

|

il y a 8 mois

gestion de projet

Lancez-vous dans la gestion de projet : un parcours passionnant

Vous ĂȘtes sur le point de dĂ©marrer votre cheminement vers un poste trĂšs demandĂ© : celui de chef de projet. L'un des plus grands avantages du domaine de la gestion de projet est qu'il englobe une large variĂ©tĂ© de positions dans de nombreux secteurs.

Chadrack Kanza

Chadrack Kanza

704

|

il y a 8 mois

gestion de projet

Que fait un chef de projet ?

Dans cet article, nous allons explorer le rÎle du chef de projet dans la gestion d'un projet. Le chef de projet joue un rÎle essentiel dans la planification, l'organisation et la coordination de toutes les activités nécessaires à la réalisation d'un projet avec succÚs.

Chadrack Kanza

Chadrack Kanza

497

|

il y a 8 mois