Aller au contenu
Projet de développement SGBD

MVC

Modèle-Vue-Contrôleur (MVC)

Introduction

Le Modèle-Vue-Contrôleur (MVC) est un motif d'architecture logicielle qui divise une application en trois composants principaux, chacun ayant un rôle distinct. Cette structure favorise la séparation des préoccupations, facilitant ainsi la maintenance et l'évolution des applications web.

Les composants du MVC

Modèle

Le modèle représente la structure des données, leur organisation et la logique métier. Il gère les interactions avec la base de données, assurant l'intégrité et la cohérence des données.

Vue

La vue est la couche de présentation. Elle affiche les données à l'utilisateur et recueille ses actions, qui sont transmises au contrôleur.

Contrôleur

Le contrôleur est l'intermédiaire entre l'utilisateur et le système. Il interprète les actions de l'utilisateur, manipule le modèle et met à jour la vue.

Routeur

Le routeur dirige les requêtes des utilisateurs vers le bon contrôleur, jouant le rôle de dispatcheur dans l'architecture MVC.

Source : https://adventy.org/fr/mvc

Cycle de vie d'une requête dans MVC

  1. L'utilisateur (🧔) demande une action via le navigateur (🌐).
  2. Le navigateur (🌐) transmet la requête au routeur (🛣️).
  3. Le routeur (🛣️) oriente vers le contrôleur (🎛️) concerné.
  4. Le contrôleur (🎛️) sollicite le modèle (💾) pour les données.
  5. Le modèle (💾) interroge la base de données (💿).
  6. Les données sont renvoyées au contrôleur (🎛️).
  7. Le contrôleur (🎛️) transmet les données à la vue (📊).
  8. La vue (📊) envoie le résultat au navigateur (🌐).
  9. L'utilisateur (🧔) voit le résultat sur le navigateur (🌐).

Tableau récapitulatif des composants MVC

Composant Rôle
Modèle Gestion des données et logique métier.
Vue Présentation des données et interaction utilisateur.
Contrôleur Traitement des requêtes, manipulation du modèle et mise à jour de la vue.
Routeur Orientation des requêtes vers le contrôleur adéquat.

Exemple pratique MVC avec Laravel

Pour mieux comprendre le MVC, voici un mini-exemple pratique d'affichage d'une liste d'articles :

1. La route (routes/web.php)

La route dirige la requête vers le contrôleur :

use App\Http\Controllers\ArticleController;

Route::get('/articles', [ArticleController::class, 'index']);

2. Le contrôleur (app/Http/Controllers/ArticleController.php)

Le contrôleur récupère les données via le modèle et appelle la vue :

namespace App\Http\Controllers;

use App\Models\Article;

class ArticleController extends Controller
{
    public function index()
    {
        $articles = Article::all(); // On récupère tous les articles depuis le modèle
        return view('articles.index', compact('articles')); // On passe les articles à la vue
    }
}

3. Le modèle (app/Models/Article.php)

Le modèle représente la logique métier (ici, très simple) et l'accès à la base de données :

namespace App\Models;

use Illuminate\Database\Eloquent\Model;

class Article extends Model
{
    protected $fillable = ['title', 'content']; // Colonnes autorisées à être modifiées
}

4. La vue (resources/views/articles/index.blade.php)

La vue présente les données à l'utilisateur :

<!DOCTYPE html>
<html lang="fr">
<head>
    <meta charset="UTF-8">
    <title>Liste des articles</title>
</head>
<body>
    <h1>Articles récents</h1>
    <ul>
        @foreach($articles as $article)
            <li><strong>{{ $article->title }}</strong> - {{ $article->content }}</li>
        @endforeach
    </ul>
</body>
</html>

Maintenant, quand tu accèdes à http://ton-projet.test/articles, Laravel exécute tout ce beau cycle MVC en arrière-plan pour afficher ta liste d’articles.