( بِسْمِ اللَّـهِ الرَّحْمَـٰنِ الرَّحِيمِ )
Initialisation

Journée 012

Création d'un Projet CRUD avec Laravel et MySQL

1. Configuration Initiale

  • Documentation et Pré-requis :
    • Tutoriel :
      • Installer PHP et Composer depuis leurs sites officiels.
      • Configurer un serveur local (LAMP, WAMP, ou Laragon).
      • Tester l’installation avec : bashphp -vcomposer -v
  • Fichiers Importants :
    • Tutoriel :
      • Générez un nouveau projet Laravel : bashcomposer create-project laravel/projet-laravel
      • Configurez le fichier .env avec les détails de votre base de données.

2. Structure MVC de Laravel

  • Modèle (Model) :
    • Tutoriel :
      • Créer un modèle et une migration associés : bashphp artisan make:model Produit -m
      • Définissez les champs dans le fichier de migration /database/migrations/create_produits_table.php : php$table->increments(‘id’);$table->string(‘nom’);

        $table->text(‘description’);

        $table->decimal(‘prix’, 8, 2);

        $table->integer(‘quantite’);

        $table->timestamps();

      • Lancez les migrations : bashphp artisan migrate
  • Vue (View) :
    • Tutoriel :
      • Créez les fichiers Blade suivants dans /resources/views/produits/ :
        • index.blade.php, create.blade.php, edit.blade.php, show.blade.php.
      • Créez un fichier layout.blade.php dans /resources/views/ pour une mise en page Bootstrap : html<div class= »container »>@yield(‘content’)</div>
  • Contrôleur (Controller) :
    • Tutoriel :
      • Générez un contrôleur pour le modèle Produit : bashphp artisan make:controller ProduitController –resource

3. Routes et Navigation

  • Tutoriel :
    • Ajoutez une route ressource dans /routes/web.php : phpuse AppHttpControllersProduitController;Route::resource(‘produits’, ProduitController::class);
    • Listez les routes générées : bashphp artisan route:list

4. Gestion de la Base de Données

  • Configuration :
    • Tutoriel :
      • Mettez à jour le fichier .env : makefileDB_CONNECTION=mysqlDB_HOST=127.0.0.1

        DB_PORT=3306

        DB_DATABASE=crud_laravel

        DB_USERNAME=root

        DB_PASSWORD=

  • Migrations :
    • Tutoriel :
      • Créez une table avec des champs spécifiques via migration (voir section modèle).

5. Fonctionnalités CRUD

  • Créer :
    • Tutoriel :
      • Dans ProduitController, ajoutez la logique pour afficher le formulaire (create()) et enregistrer les données (store()).
      • Exemple : phppublic function store(Request $request) {$validated = $request->validate([

        ‘nom’ => ‘required’,

        ‘description’ => ‘required’,

        ‘prix’ => ‘required|numeric’,

        ‘quantite’ => ‘required|integer’,

        ]);

        Produit::create($validated);

        return redirect()->route(‘produits.index’)->with(‘success’, ‘Produit ajouté avec succès!’);

        }

  • Lire :
    • Tutoriel :
      • Affichez les produits existants dans index.blade.php : php@foreach ($produits as $produit)<tr>

        <td>{{ $produit->nom }}</td>

        <td>{{ $produit->prix }}</td>

        </tr>

        @endforeach

  • Mettre à jour :
    • Tutoriel :
      • Récupérez un produit spécifique dans la méthode edit() : phppublic function edit($id) {$produit = Produit::findOrFail($id);

        return view(‘produits.edit’, compact(‘produit’));

        }

      • Mettez à jour avec update() : phppublic function update(Request $request, $id) {$validated = $request->validate([…]);

        Produit::whereId($id)->update($validated);

        return redirect()->route(‘produits.index’)->with(‘success’, ‘Produit mis à jour avec succès!’);

        }

  • Supprimer :
    • Tutoriel :
      • Supprimez un produit avec destroy() : phppublic function destroy($id) {Produit::findOrFail($id)->delete();

        return redirect()->route(‘produits.index’)->with(‘success’, ‘Produit supprimé avec succès!’);

        }

6. Fonctionnalités Avancées

  • Messages de Validation et de Succès :
    • Tutoriel :
      • Affichez des messages dans la vue avec : php@if(session(‘success’))<div class= »alert alert-success »>{{ session(‘success’) }}</div>

        @endif

  • Utilisation de Blade :
    • Tutoriel :
      • Ajoutez des conditions et boucles : php@if(count($produits) > 0)@foreach($produits as $produit)

        <p>{{ $produit->nom }}</p>

        @endforeach

        @else

        <p>Aucun produit trouvé</p>

        @endif

  • Utilisation de Bootstrap :
    • Tutoriel :
      • Appliquez des classes Bootstrap aux tables et formulaires pour un meilleur rendu.

1 - Pré-requis "Installation de base ?

• Un serveur LAMP tel que Laragon, WAMP ou XAMP
• Un client MySQL comme PHPMyAdmin ou HeidiSQL, dans ce projet j’utiliserais MySQL Workbench
• Un éditeur de code, dans ce projet j’utiliserai Visual Studio Code

2 - Installer PHP Composer

Composer est un gestionnaire de dépendances pour PHP. Il permet d’installer et de gérer facilement les bibliothèques nécessaires à votre projet.

Voici un guide étape par étape pour l’installer :

  • 1. Qu’est-ce que Composer ?

    • Composer permet de déclarer les bibliothèques dont un projet PHP a besoin et de les installer automatiquement.
      Il génère un fichier composer.json pour suivre les dépendances de votre projet.

 

  • 2. Installation de Composer sur différents systèmes

    • Pour Windows :
      • Télécharger l’installeur :
        Rendez-vous sur le site officiel de Composer : getcomposer.org.
        Exécuter le fichier d’installation :
        Lancez le programme d’installation téléchargé.
        Suivez les étapes pour configurer Composer avec votre environnement PHP (indiquez l’emplacement de l’exécutable PHP, par exemple php.exe).
      • Tester l’installation :
        Ouvrez un terminal (cmd ou PowerShell).
        Tapez la commande suivante pour vérifier que Composer est installé :
        composer -v
    • Pour Linux et macOS :
      • Télécharger Composer via le terminal :
        Exécutez la commande suivante pour télécharger l’installateur :
        php -r « copy(‘https://getcomposer.org/installer’, ‘composer-setup.php’); »
      • Vérifier l’intégrité de l’installateur :
        Assurez-vous que le fichier est correct en comparant son hash (disponible sur getcomposer.org):
        php -r « if (hash_file(‘sha384’, ‘composer-setup.php’) === ‘HASH_ATTENDU’) { echo ‘Installer verified’; } else { echo ‘Installer corrupt’; unlink(‘composer-setup.php’); } echo PHP_EOL; »
        Installer Composer :
      • Exécutez l’installateur :
        php composer-setup.php
        Rendre Composer global :
        Déplacez le fichier Composer pour qu’il soit accessible globalement :
        sudo mv composer.phar /usr/local/bin/composer
      • Tester l’installation :
        Vérifiez la version installée :
        composer -v

 

  • 3. Vérifications post-installation

    • Assurez-vous que la commande composer fonctionne dans tous vos projets PHP.
    • Pour des projets Laravel, vous pouvez maintenant créer un projet en exécutant :
      composer create-project laravel/laravel nom_du_projet

 

  • Ressources utiles

  • Documentation officielle de Composer : Documentation officielle de Composer
    Une fois Composer installé, vous êtes prêt à gérer efficacement vos dépendances PHP pour tous vos projets.

3 - Création d’un projet Laravel 11

Laravel 11 est une version du framework Laravel qui repose sur PHP et permet de développer rapidement des applications web. Voici les étapes pour créer un projet Laravel 11.

 

  • 1. Prérequis
    Assurez-vous que les outils suivants sont installés sur votre système :
    • PHP (8.0 ou supérieur).
    • Composer (le gestionnaire de dépendances PHP).
      MySQL ou tout autre système de gestion de base de données.
      Un serveur local comme Laragon, WAMP, XAMPP ou une configuration LAMP.
      Pour vérifier vos installations : php -v composer -v

 

  • 2. Installation d’un projet Laravel avec Composer
    • Exécutez la commande suivante dans le terminal pour créer un nouveau projet Laravel :
      composer create-project laravel/laravel nom_du_projet
      Option –prefer-dist : Cette option télécharge uniquement la version compressée la plus récente depuis les dépôts, ce qui accélère l’installation. Exemple :
      composer create-project –prefer-dist laravel/laravel laravel-gestion-stocks
      Naviguez dans le dossier du projet :
      cd laravel-gestion-stocks

 

  • 3. Configuration de l’environnement
    • Modifier le fichier .env :
      Ouvrez le fichier .env à la racine de votre projet.
      Configurez les informations de votre base de données :
      DB_CONNECTION=mysql
      DB_HOST=127.0.0.1
      DB_PORT=3306
      DB_DATABASE=laravel_db
      DB_USERNAME=root
      DB_PASSWORD=
      Générez une clé d’application :
      Laravel utilise cette clé pour sécuriser les données :
      php artisan key:generate

 

  • 4. Démarrer le serveur Laravel
    • Lancez l’application Laravel en utilisant Artisan, l’interface en ligne de commande de Laravel : php artisan serve
      Vous verrez une URL comme celle-ci : Server running on [http://127.0.0.1:8000]
      Ouvrez cette URL dans votre navigateur pour voir la page d’accueil de Laravel.

 

  • 5. Commandes utiles pour vérifier l’installation
    • Vérifiez la version de Laravel :
      php artisan –version
      Listez les routes disponibles :
      php artisan route:list

 

  • 6. Prochaine étape : Développer votre application
    • Configurez les routes dans /routes/web.php.
      Créez des contrôleurs, modèles, et vues pour commencer à développer les fonctionnalités de votre application.
      Laravel est maintenant prêt à l’emploi pour développer une application robuste et évolutive.

Qu’est-ce que Laravel ?

Laravel est un framework PHP open-source conçu pour faciliter et accélérer le développement d’applications web.

Il est particulièrement populaire grâce à ses fonctionnalités intégrées et son approche élégante pour construire des applications robustes et maintenables.

Laravel est une boîte à outils puissante pour les développeurs PHP, leur permettant de créer rapidement des applications modernes et bien structurées.

Pourquoi Laravel est-il populaire ?

  1. Facile à apprendre : Documentation claire et complète.
  2. Productivité accrue : De nombreuses fonctionnalités prêtes à l’emploi.
  3. Communauté active : Une vaste communauté de développeurs pour le support et les ressources.
  4. Écosystème riche :
    • Laravel Forge : Outil pour déployer des applications.
    • Laravel Nova : Interface d’administration.

Laravel est-il frontend ou backend ?

Laravel est principalement un framework backend, conçu pour gérer la logique serveur et les interactions avec la base de données. Cependant, il offre également des fonctionnalités pour le frontend, ce qui le rend polyvalent.

 

Pourquoi Laravel est principalement backend ?

  1. Gestion des requêtes et réponses HTTP :

    • Laravel est responsable du traitement des requêtes des utilisateurs, de leur gestion et de la réponse via le serveur.
    • Par exemple : récupérer des données d’une base MySQL et les envoyer sous forme de JSON pour une API RESTful.
  2. Connexion à la base de données :

    • Il utilise Eloquent ORM pour faciliter l’interaction avec les bases de données relationnelles.
    • Exemple : Création, lecture, mise à jour et suppression de données (CRUD).
  3. Sécurité :

    • Propose des mécanismes intégrés pour protéger les applications contre des attaques comme CSRF, XSS et SQL Injection.
  4. API :

    • Laravel est couramment utilisé pour construire des API backend robustes qui communiquent avec des interfaces frontend via des requêtes HTTP.

Fonctionnalités frontend incluses dans Laravel

Bien que Laravel soit un framework backend, il inclut des outils pour gérer certaines tâches frontend :

  1. Moteur de templates Blade :

    • Permet de construire des vues dynamiques.
    • Exemple : Afficher des données dans un tableau HTML grâce à des boucles Blade (@foreach).
  2. Assets et ressources frontend :

    • Laravel utilise Laravel Mix, un wrapper pour Webpack, pour compiler des fichiers CSS et JavaScript.
    • Supporte directement des frameworks comme Vue.js, React ou des outils CSS comme Tailwind et Sass.
  3. Fonctionnalités d’authentification :

    • Génère des vues frontend pour des fonctionnalités comme l’inscription, la connexion et la réinitialisation de mot de passe.

Comment Laravel collabore avec le frontend moderne ?

  • Laravel est souvent utilisé avec des frameworks JavaScript comme Vue.js, React ou Angular pour créer des applications full-stack modernes.
  • Exemple : Laravel gère les API backend, et Vue.js gère les interactions utilisateur sur le frontend.

  • Laravel est avant tout un framework backend, mais il fournit des outils frontend intégrés (Blade, Laravel Mix).
  • Pour des projets nécessitant une séparation stricte frontend/backend, Laravel excelle comme backend en combinaison avec des frameworks frontend modernes.

Caractéristiques de Laravel

  1. Basé sur l’architecture MVC (Model-View-Controller) :
    • Divise une application en trois composants principaux :
      • Modèle (Model) : Gestion des données.
      • Vue (View) : Interface utilisateur.
      • Contrôleur (Controller) : Gestion des requêtes et des interactions entre modèle et vue.
  2. ORM Eloquent :
    • Permet une interaction simple et fluide avec les bases de données.
    • Utilise une syntaxe expressive pour manipuler les données (exemple : Produit::all()).
  3. Artisan CLI :
    • Outil en ligne de commande intégré pour automatiser les tâches courantes, comme la création de contrôleurs, modèles, migrations, etc.
  4. Moteur de Templates Blade :
    • Facilite la création d’interfaces dynamiques en séparant le HTML et la logique.
  5. Sécurité intégrée :
    • Protection contre les attaques courantes (CSRF, XSS, SQL Injection).
    • Gestion sécurisée des mots de passe avec Hashing.
  6. Système de routage puissant :
    • Permet de définir facilement des itinéraires pour les requêtes HTTP.
  7. Gestion des migrations et des seeders :
    • Simplifie la création et la modification de la structure de la base de données.

Quand utiliser Laravel ?

Laravel est idéal pour :

  • Créer des applications web dynamiques avec une logique backend complexe.
  • Développer des API RESTful.
  • Gérer des projets nécessitant une base de données relationnelle.

Qu’est-ce que le modèle MVC en PHP Laravel ?

Le modèle MVC (Model-View-Controller) est une architecture logicielle utilisée par Laravel pour organiser le code d’une application.

Il sépare les responsabilités en trois parties distinctes :

  1. Modèle (Model),
  2. Vue (View)
  3. et Contrôleur (Controller),

facilitant ainsi la maintenance, la compréhension et l’évolutivité du projet.

Les composantes du modèle MVC

  1. Modèle (Model) :
    • Représente la logique métier et gère les interactions avec la base de données.
    • En Laravel, les modèles sont créés dans le répertoire /app/Models/.
    • Utilise Eloquent ORM, qui simplifie les opérations CRUD (Create, Read, Update, Delete).
    • Exemple : php namespace AppModels; use IlluminateDatabaseEloquentModel; class Produit extends Model { protected $fillable = ['nom', 'description', 'prix', 'quantite']; }

     

  2. Vue (View) :
    • Responsable de l’affichage des données à l’utilisateur.
    • Utilise le moteur de templates Blade pour générer du HTML dynamique.
    • Les fichiers de vue se trouvent dans /resources/views/.
    • Exemple de vue (produits/index.blade.php) : blade
      <h1>Liste des produits</h1> <ul> @foreach($produits as $produit) <li>{{ $produit->nom }} - {{ $produit->prix }}€</li> @endforeach </ul>

     

  3. Contrôleur (Controller) :
      • Sert d’intermédiaire entre le Modèle et la Vue.
      • Traite les requêtes HTTP, exécute la logique d’affaires, et transmet les données du modèle à la vue.
      • Les contrôleurs sont définis dans /app/Http/Controllers/.
      • Exemple : php
        namespace AppHttpControllers; use AppModelsProduit; class ProduitController extends Controller { public function index() { $produits = Produit::all(); return view('produits.index', compact('produits')); } }

     

Exemple de fonctionnement MVC dans Laravel

Supposons qu’un utilisateur demande une liste de produits via l’URL /produits :

  1. Requête utilisateur :
    • L’utilisateur visite /produits.
    • Laravel utilise le système de routage pour diriger cette requête vers la méthode index du ProduitController.
  2. Action du contrôleur :
    • Le contrôleur interagit avec le modèle pour récupérer les données des produits : php
      $produits = Produit::all();
  3. Transmission à la vue :
    • Le contrôleur passe les données récupérées à la vue : php
      return view('produits.index', compact('produits'));
  4. Affichage dans la vue :
      • La vue affiche dynamiquement la liste des produits en utilisant les données transmises par le contrôleur.

     

Avantages du modèle MVC

  • Organisation claire : Séparation des responsabilités facilite la compréhension et la maintenance.
  • Réutilisation du code : Les modèles et les vues peuvent être réutilisés dans différentes parties de l’application.
  • Collaboration simplifiée : Les développeurs frontend et backend peuvent travailler simultanément sans conflits.