Le routing — les URLs de l'application
Routes GET/POST, paramètres, groupes et nommage
Concepts Théoriques
Quand un visiteur tape https://sunulearn.com/formations dans son navigateur, Laravel doit savoir quoi faire avec cette URL. C'est le rôle du routeur : il associe chaque URL à un morceau de code qui génère la réponse (une page HTML, une redirection, du JSON).
Le routing est la porte d'entrée de votre application. Sans routes, Laravel ne sait pas quoi afficher.
Où définir les routes
Laravel a deux fichiers de routes :
- routes/web.php — pour les pages HTML (avec sessions, cookies, CSRF). C'est là que vous travaillerez principalement.
- routes/api.php — pour les endpoints JSON (API REST). On l'utilisera au chapitre 13.
Route simple — GET
// routes/web.php
Route::get('/formations', function () {
return 'Liste des formations';
});Quand quelqu'un visite /formations, Laravel exécute la fonction et retourne le texte. C'est la route la plus simple possible.
Les méthodes HTTP
Chaque route correspond à une méthode HTTP :
- GET — lire/afficher (pages, formulaires vides)
- POST — créer (soumettre un formulaire)
- PUT/PATCH — modifier (mettre à jour une ressource)
- DELETE — supprimer
Route::get('/formations', ...); // Afficher la liste
Route::get('/formations/create', ...); // Afficher le formulaire de création
Route::post('/formations', ...); // Traiter la soumission du formulaire
Route::get('/formations/{id}', ...); // Afficher une formation
Route::put('/formations/{id}', ...); // Mettre à jour une formation
Route::delete('/formations/{id}', ...); // Supprimer une formationParamètres d'URL
Les accolades {} capturent une partie variable de l'URL :
Route::get('/formations/{slug}', function (string $slug) {
return "Formation : " . $slug;
});
// /formations/html-css-javascript → "Formation : html-css-javascript"
// /formations/laravel-12 → "Formation : laravel-12"Paramètre optionnel avec ? et valeur par défaut :
Route::get('/formations/{category?}', function (string $category = 'all') {
return "Catégorie : " . $category;
});Routes nommées
Donner un nom à une route permet de la référencer sans copier l'URL :
Route::get('/formations', ...)->name('formations.index');
Route::get('/formations/{slug}', ...)->name('formations.show');Dans Blade : <a href="{{ route('formations.index') }}">. Si l'URL change un jour, vous modifiez seulement la route — pas tous les liens dans vos vues.
Groupes de routes
Regrouper les routes qui partagent un préfixe ou un middleware :
Route::prefix('admin')->middleware('auth')->group(function () {
Route::get('/formations', ...)->name('admin.formations.index');
Route::get('/formations/create', ...)->name('admin.formations.create');
});
// Génère : /admin/formations et /admin/formations/create
// Toutes protégées par l'authentificationRetourner une vue Blade
En pratique, on retourne rarement du texte brut. On retourne une vue :
Route::get('/', function () {
return view('home');
});
// Cherche le fichier resources/views/home.blade.phpOn peut passer des données à la vue :
Route::get('/formations', function () {
$formations = ['HTML/CSS/JS', 'PHP', 'Laravel', 'SQL'];
return view('formations.index', ['formations' => $formations]);
});