Sommaire
- Configuration Initiale
- Structure MVC de Laravel
- Routes et Navigation
- Gestion de la Base de Données
- Fonctionnalités CRUD
- Fonctionnalités Avancées
- Conclusion
1. Configuration Initiale
Pré-requis
Avant de commencer, assurez-vous d’avoir installé les outils suivants :
- PHP (version ≥ 8.0) et Composer (gestionnaire de dépendances PHP).
- Téléchargez-les depuis leurs sites officiels.
- Serveur local (LAMP, WAMP, Laragon ou XAMPP).
- Laragon est recommandé pour sa simplicité et sa compatibilité avec Laravel.
Tester l’installation
Exécutez les commandes suivantes pour vérifier que tout est correctement installé :
bash
php -v composer -v
Création du Projet Laravel
- Créez un nouveau projet Laravel en exécutant :
bash
composer create-project laravel/laravel projet-laravel
- Configurez votre base de données dans le fichier
.env
généré :env
DB_CONNECTION=mysql DB_HOST=127.0.0.1 DB_PORT=3306 DB_DATABASE=crud_laravel DB_USERNAME=root DB_PASSWORD=
- Lancez le serveur local Laravel :
bash
php artisan serve
Accédez à votre projet dans un navigateur à l’adresse
http://127.0.0.1:8000
.
2. Structure MVC de Laravel
Laravel suit une architecture MVC (Modèle-Vue-Contrôleur) permettant de séparer la logique métier, la présentation et le contrôle.
Modèle (Model)
- Créez un modèle et une migration associés :
bash
php artisan make:model Produit -m
Cela génère :
- Un fichier modèle dans
/app/Models/Produit.php
. - Un fichier de migration dans
/database/migrations/
.
- Un fichier modèle dans
- Définissez les champs dans le fichier de migration :
php
Schema::create('produits', function (Blueprint $table) { $table->id(); $table->string('nom'); $table->text('description'); $table->decimal('prix', 8, 2); $table->integer('quantite'); $table->timestamps(); });
- Lancez les migrations pour créer la table :
bash
php artisan migrate
Vue (View)
- Créez les fichiers Blade suivants dans
/resources/views/produits/
:index.blade.php
: Liste des produits.create.blade.php
: Formulaire de création.edit.blade.php
: Formulaire de modification.show.blade.php
: Détails d’un produit.
- Ajoutez un fichier de mise en page globale (
layout.blade.php
) dans/resources/views/
:html
<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8"> <title>@yield('title')</title> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css"> </head> <body> <div class="container mt-4"> @yield('content') </div> </body> </html>
Contrôleur (Controller)
- Générez un contrôleur avec les méthodes CRUD préconfigurées : bash
php artisan make:controller ProduitController --resource
- Cela crée un fichier dans
/app/Http/Controllers/ProduitController.php
avec les méthodes :index()
,create()
,store()
,edit()
,update()
,destroy()
.
3. Routes et Navigation
- Ajoutez une route ressource dans
/routes/web.php
:php
use App\Http\Controllers\ProduitController; Route::resource('produits', ProduitController::class);
- Listez toutes les routes générées :
bash
php artisan route:list
4. Gestion de la Base de Données
Configuration
Assurez-vous que votre fichier .env
est correctement configuré avec les informations de connexion à MySQL.
Migrations
Si vous ajoutez des champs supplémentaires, vous pouvez modifier les fichiers de migration et relancer la commande :
bash php artisan migrate:refresh
5. Fonctionnalités CRUD
Créer un Produit
- Dans
ProduitController
:- Méthode
create()
: phppublic function create() { return view('produits.create'); }
- Méthode
store()
: 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!'); }
- Méthode
- Formulaire dans
create.blade.php
:html
<form action="{{ route('produits.store') }}" method="POST"> @csrf <input type="text" name="nom" placeholder="Nom du produit" class="form-control mb-3"> <textarea name="description" placeholder="Description" class="form-control mb-3"></textarea> <input type="number" name="prix" placeholder="Prix" class="form-control mb-3"> <input type="number" name="quantite" placeholder="Quantité" class="form-control mb-3"> <button type="submit" class="btn btn-primary">Ajouter</button> </form>
Lire les Produits
- Dans
index.blade.php
, affichez les produits : html@foreach ($produits as $produit) <tr> <td>{{ $produit->nom }}</td> <td>{{ $produit->prix }}</td> </tr> @endforeach
Mettre à Jour un Produit
- Méthode
edit()
:php
public function edit($id) { $produit = Produit::findOrFail($id); return view('produits.edit', compact('produit')); }
- Méthode
update()
:php
public 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 un Produit
- Méthode
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
Ajoutez dans vos vues :
php @if(session('success')) <div class="alert alert-success">{{ session('success') }}</div> @endif
Utilisation de Bootstrap
Appliquez des classes Bootstrap pour styliser vos formulaires, tables, et boutons.
Pagination
Ajoutez la pagination avec Eloquent :
php $produits = Produit::paginate(10);
Dans votre vue :
html {{ $produits->links() }}
7. Conclusion
Ce projet CRUD avec Laravel et MySQL couvre les bases de la gestion des données (CRUD) tout en respectant la structure MVC de Laravel. Vous pouvez étendre ce projet avec des fonctionnalités supplémentaires comme l’authentification, les filtres avancés ou l’exportation de données. Laravel offre de puissants outils pour construire rapidement des applications robustes et maintenables.