Laravel: Définir des Routes
Les routes sont une partie essentielle de toute application web Laravel. Elles permettent de définir comment les demandes URL doivent être traitées par l'application. Ce guide détaillé vous expliquera comment définir et gérer les routes dans Laravel avec des exemples pratiques.
Introduction aux Routes
Dans Laravel, les routes sont définies dans les fichiers situés dans le répertoire routes. Les fichiers principaux sont :
web.php: Pour les routes web qui utilisent les middlewares web.api.php: Pour les routes API qui utilisent les middlewares api.console.php: Pour les commandes Artisan.channels.php: Pour les canaux de diffusion d'événements.
Routes de Base
1. Route GET
// routes/web.php
use Illuminate\Support\Facades\Route;
Route::get('/bonjour', function () {
return 'Bonjour, monde!';
});
Cette route répond à une requête GET sur /bonjour et retourne "Bonjour, monde!".
2. Route POST
// routes/web.php
use Illuminate\Support\Facades\Route;
Route::post('/soumettre', function () {
return 'Formulaire soumis!';
});
Cette route répond à une requête POST sur /soumettre et retourne "Formulaire soumis!".
3. Route avec Paramètres
// routes/web.php
use Illuminate\Support\Facades\Route;
Route::get('/utilisateur/{id}', function ($id) {
return "Utilisateur $id";
});
Cette route accepte un paramètre id et retourne "Utilisateur {id}".
4. Route avec Paramètres Optionnels
// routes/web.php
use Illuminate\Support\Facades\Route;
Route::get('/salut/{nom?}', function ($nom = 'Invité') {
return "Salut, $nom";
});
Cette route accepte un paramètre optionnel nom et retourne "Salut, {nom}" ou "Salut, Invité" si aucun nom n'est fourni.
Routes vers les Contrôleurs
1. Route vers une Méthode de Contrôleur
// routes/web.php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UtilisateurController;
Route::get('/utilisateur/{id}', [UtilisateurController::class, 'montrer']);
Cette route appelle la méthode montrer du UtilisateurController pour afficher un utilisateur spécifique.
2. Ressources de Contrôleur
// routes/web.php
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UtilisateurController;
Route::resource('utilisateurs', UtilisateurController::class);
Cette commande génère automatiquement toutes les routes CRUD pour le UtilisateurController.
Groupes de Routes
Les groupes de routes permettent de partager les attributs, comme le middleware ou les préfixes, entre plusieurs routes.
1. Groupes de Routes avec Middleware
// routes/web.php
use Illuminate\Support\Facades\Route;
Route::middleware(['auth'])->group(function () {
Route::get('/profil', function () {
// Utilisateur authentifié
});
Route::get('/parametres', function () {
// Utilisateur authentifié
});
});
Toutes les routes à l'intérieur de ce groupe appliqueront le middleware auth.
2. Groupes de Routes avec Préfixe
// routes/web.php
use Illuminate\Support\Facades\Route;
Route::prefix('admin')->group(function () {
Route::get('/utilisateurs', function () {
// Gestion des utilisateurs
});
Route::get('/articles', function () {
// Gestion des articles
});
});
Toutes les routes à l'intérieur de ce groupe auront le préfixe /admin.
Routes Nomées
Les routes nommées permettent de générer des URL ou de rediriger vers des routes spécifiques plus facilement.
1. Définir une Route Nommée
// routes/web.php
use Illuminate\Support\Facades\Route;
Route::get('/profil', function () {
// ...
})->name('profil');
Cette route peut être référencée par son nom profil.
2. Générer une URL vers une Route Nommée
<a href="{{ route('profil') }}">Profil</a>
3. Rediriger vers une Route Nommée
return redirect()->route('profil');
Middleware
Les middleware sont des couches intermédiaires qui peuvent inspecter ou modifier les requêtes HTTP avant qu'elles ne soient gérées par le contrôleur.
1. Appliquer un Middleware à une Route
// routes/web.php
use Illuminate\Support\Facades\Route;
Route::get('/tableau-de-bord', function () {
// ...
})->middleware('auth');
2. Appliquer un Middleware à un Groupe de Routes
// routes/web.php
use Illuminate\Support\Facades\Route;
Route::middleware(['auth', 'admin'])->group(function () {
Route::get('/admin', function () {
// Tableau de bord admin
});
Route::get('/admin/utilisateurs', function () {
// Gestion des utilisateurs admin
});
});
Routes API
Les routes API sont définies dans le fichier routes/api.php et utilisent le middleware api.
1. Définir une Route API
// routes/api.php
use Illuminate\Support\Facades\Route;
Route::get('/utilisateurs', function () {
return App\Models\User::all();
});
Cette route API retourne tous les utilisateurs sous forme de JSON.
Conclusion
La définition des routes est une partie cruciale du développement d'une application Laravel. Elle permet de contrôler comment les demandes URL sont traitées par l'application. En suivant ce guide, vous devriez maintenant être capable de définir et gérer les routes de base, les routes vers les contrôleurs, les groupes de routes, les routes nommées, et les middleware.
Pour plus de détails, consultez la documentation officielle de Laravel.