Laravel
Laravel 11 & 10 • Chapitre 3 : Développement

Routes, Contrôleurs & Route Model Binding

Le routage est la porte d'entrée de votre application web. Découvrez comment définir des routes claires et expressives, les relier à des contrôleurs typés et tirer parti de la magie du Route Model Binding pour injecter vos modèles Eloquent sans effort.

🧭
Routes Nommées

Définissez vos URLs avec ->name('articles.show') et générez des liens dynamiques avec le helper route().

🎮
Contrôleurs Typés

Syntaxe moderne [ArticleController::class, 'index'] offrant auto-complétion et refactorisation sécurisée.

⚡
Route Model Binding

Injectez show(Article $article) directement : Laravel effectue le findOrFail() et gère l'erreur 404 tout seul.

🛡️
Groupes & Middlewares

Protégez et préfixez des ensembles de routes avec Route::middleware('auth') et Route::prefix('admin').

routes/web.php & ArticleController.php
// 1. routes/web.php : Syntaxe moderne par classe (Laravel 10 / 11)
use AppHttpControllersArticleController;
use IlluminateSupportFacadesRoute;

// Route simple vers une vue
Route::get('/', fn () => view('accueil'))->name('accueil');

// Routes de ressources (génère les 7 actions REST standard en une ligne)
Route::resource('articles', ArticleController::class);

// Groupe protégé par middleware
Route::middleware(['auth'])->prefix('admin')->name('admin.')->group(function () {
    Route::get('/dashboard', [AdminController::class, 'dashboard'])->name('dashboard');
});

// 2. app/Http/Controllers/ArticleController.php
namespace AppHttpControllers;

use AppModelsArticle;
use IlluminateHttpRequest;
use IlluminateViewView;
use IlluminateHttpRedirectResponse;

class ArticleController extends Controller
{
    // Liste paginée des articles
    public function index(): View
    {
        $articles = Article::latest()->paginate(10);
        return view('articles.index', compact('articles'));
    }

    // Affichage avec Route Model Binding automatique :
    // Si l'article n'existe pas en BDD -> Laravel déclenche automatiquement une page 404 !
    public function show(Article $article): View
    {
        return view('articles.show', compact('article'));
    }

    // Suppression sécurisée
    public function destroy(Article $article): RedirectResponse
    {
        $article->delete();
        return redirect()->route('articles.index')->with('success', 'Article supprimé.');
    }
}

Simulateur Testeur de Routage & Route Model Binding

Simulation Interactive du Routeur

Sélectionnez une requête HTTP entrante pour observer comment le routeur de Laravel fait correspondre l'URL au contrôleur approprié et résout automatiquement les modèles Eloquent.

ANALYSE DU ROUTEURGET
URL demandée : /articles
Route nommée : articles.index
Contrôleur cible : ArticleController@index
Middlewares : web
ROUTE MODEL BINDING200 OK
Aucun paramètre dynamique à injecter pour cette route. Rendu direct du template ou de la collection.
Les 7 Actions RESTful de Route::resource()
Méthode HTTPURIAction ContrôleurNom de RouteRôle / Description
GET/articlesindexarticles.indexAfficher la liste de tous les articles.
GET/articles/createcreatearticles.createAfficher le formulaire HTML de création.
POST/articlesstorearticles.storeEnregistrer un nouvel article en BDD.
GET/articles/{article}showarticles.showAfficher un article spécifique (Route Model Binding).
GET/articles/{article}/editeditarticles.editAfficher le formulaire de modification.
PUT/PATCH/articles/{article}updatearticles.updateMettre à jour l'article en BDD.
DELETE/articles/{article}destroyarticles.destroySupprimer l'article de la BDD.