Cours Laravel TS INFO 2 INPHB
Cours Laravel TS INFO 2 INPHB
Cours Laravel TS INFO 2 INPHB
TOUALY REGIS
Yere.toualy@produitbat.ci
11/06/2023
Contenu
Séance 1 :......................................................................................................................... 2
Module 1 : Introduction à Laravel .................................................................................. 2
Module 2 : Structure d'un projet Laravel......................................................................... 5
Séance 2 :......................................................................................................................... 9
Module 3 : Les contrôleurs ............................................................................................ 9
Module 4 : Bases de données et Eloquent ORM............................................................ 12
Séance 3 :....................................................................................................................... 16
Module 5 : Relations avec Eloquent ............................................................................. 16
Module 6 : Validation des données ............................................................................... 21
Séance 4 :....................................................................................................................... 22
Module 7 : Authentification et autorisation ................................................................... 22
Module 8 : Gestion des fichiers et des images ............................................................... 23
Séance 5 :....................................................................................................................... 24
Module 9 : API et développement d'applications mobiles............................................... 24
Module 10 : Sécurité ................................................................................................... 25
Séance 6 :....................................................................................................................... 25
Exercice d’application ................................................................................................. 25
Evaluation .................................................................................................................. 25
Séance 1 :
Module 1 : Introduction à Laravel
1. Qu'est-ce que Laravel ?
Laravel est un framework de développement web et api open-source écrit en PHP. Il a
été créé par Taylor Otwell en 2011et est devenu l'un des frameworks PHP les plus populaires et
les plus appréciés par la communauté des développeurs.
Laravel adopte une approche élégante et expressive du développement, en mettant
l'accent sur la simplicité, la clarté du code et la productivité. Il offre de nombreuses
fonctionnalités avancées qui simplifient le développement d'applications web robustes et
évolutives.
1 Un moteur de template est un outil de modèle structurel qui simplifie la syntaxe pour assurer une bonne maintenabilité de son
projet web. Il permet de dissocier la partie présentation (HTML) de la partie programmation
• PHP : Laravel nécessite PHP dans une version spécifique. Actuellement, Laravel 8.x
recommande PHP 8.0 ou une version supérieure. Assurez-vous d'installer PHP sur votre
machine et de vérifier la version à l'aide de la commande php -v dans votre terminal.
• Composer : Composer est un gestionnaire de dépendances pour PHP. Laravel utilise
Composer pour gérer ses propres dépendances et faciliter l'installation de nouveaux
packages. Vous devez donc installer Composer sur votre machine. Vous pouvez le
télécharger à partir du site officiel de Composer (https://getcomposer.org/) et suivre les
instructions d'installation spécifiques à votre système d'exploitation.
• Serveur web : Laravel fonctionne sur différents serveurs web tels qu’Apache, Nginx,
etc. Vous pouvez utiliser le serveur de développement intégré de Laravel pour vos
besoins de développement local, ou configurer un serveur web comme Apache ou
Nginx pour une utilisation en production.
• Base de données : Laravel prend en charge plusieurs systèmes de gestion de base de
données tels que MySQL, PostgreSQL, SQLite, etc. Vous devez installer le système de
gestion de base de données de votre choix et configurer les informations de connexion
dans le fichier .env de votre projet Laravel.
• Outil de ligne de commande artisan : Laravel fournit une interface en ligne de
commande appelée artisan, qui facilite le développement en automatisant de
nombreuses tâches courantes. Assurez-vous d'avoir accès à la commande php artisan
dans votre terminal pour exécuter les commandes artisan.
• Éditeur de code : Vous pouvez utiliser n'importe quel éditeur de code de votre choix
pour développer avec Laravel. Certains éditeurs populaires pour le développement
Laravel incluent Visual Studio Code, PhpStorm, Sublime Text, et Atom.
Assurez-vous que le répertoire d'exécution des binaires Composer est inclus dans votre variable
d'environnement PATH afin que vous puissiez utiliser la commande Laravel à partir de
n'importe quel répertoire.
• Étape 3 : Créer un nouveau projet Laravel
Naviguez vers le répertoire où vous souhaitez créer votre projet Laravel et exécutez la
commande suivante :
laravel new nom-du-projet
5. Exercice d’application 1
Description de l’exercice : Création d'un projet Laravel
EShopper est un site e-commerce multi-vendeur permettant aux utilisateurs de créer
leurs propres boutiques en ligne et de vendre leurs produits.
Dans ce exerce nous allons faire l’installation et la configuration de laravel pour
développer notre projet EShopper. Pour ce faire nous allons installer Laragon comme server
local.
C’est quoi Laragon ?
Laragon est un environnement de développement local léger et puissant spécialement
conçu pour les projets PHP, y compris Laravel. Il fournit une installation rapide et facile de
l'ensemble de la pile (Apache, PHP, MySQL) et offre des fonctionnalités avancées pour la
gestion de vos projets Laravel.
Rendez-vous sur le site officiel de Laragon (https://laragon.org/) et téléchargez la
dernière version disponible. Assurez-vous de télécharger la version compatible avec votre
système d'exploitation.
En utilisant Laragon, vous pouvez rapidement configurer un environnement de
développement local pour Laravel sans avoir à installer séparément Apache, PHP, COMPOSER
et MySQL. Cela facilite le développement et le test de vos projets Laravel sur votre propre
machine.
Cette route définit l'URL de base '/' et indique que la vue welcome doit être renvoyée lorsque
cette URL est accédée via une requête GET.
Cette route définit une URL qui accepte un paramètre id dans l'URL et renvoie la vue ‘user’ en
passant l'ID de l'utilisateur comme donnée.
➢ Vues :
Les vues sont utilisées pour afficher les données et le contenu de votre application. Dans
Laravel, les vues sont généralement créées à l'aide du moteur de template Blade.
• Ouvrez le répertoire ‘resources/views’ dans votre projet Laravel.
• Créez un nouveau fichier de vue avec l’extension .blade.php.
Par exemple, ‘welcome.blade.php’.
Dans ce fichier, vous pouvez utiliser la syntaxe Blade pour afficher des données, inclure d'autres
fichiers de vue, boucler sur des données, etc. Par exemple :
<html>
<head>
<title>Mon application Laravel</title>
</head>
<body>
<h1>Bienvenue sur mon site !</h1>
</body>
</html>
4. Exercice d’application 2
Dans cet exercice nous allons :
index.blade.php
create.blade.php
modifier.blade.php
datail.blade.php
boutique.blade.php
Route::get('/', function () {
return view('product.index');
});
Route::get('/formulaire-inscription-produit', function () {
return view('product.create');
});
Séance 2 :
Module 3 : Les contrôleurs
1. Création de contrôleurs
Les contrôleurs dans Laravel sont responsables de la gestion des requêtes utilisateur et
de la coordination des actions associées.
Cet exemple 1 retourne page index se trouvant dans le dossier product sans aucunes données.
Exemple 2 :
On souhaite afficher les produits sur notre page index, les données sont passées sous forme de
tableau.
namespace App\Http\Middleware;
use Closure;
class CheckAgeMiddleware
{
public function handle($request, Closure $next)
{
if ($request->status == 1) {
return redirect('home'); //
}else{
return redirect(login);
}
return $next($request);
}
}
2. Enregistrez le middleware
Pour utiliser le middleware, vous devez l'enregistrer dans le fichier
app/Http/Kernel.php de votre application. Dans ce fichier, vous trouverez un tableau
$middleware qui répertorie les middlewares globaux qui s'appliquent à toutes les requêtes. Vous
pouvez également trouver un tableau $routeMiddleware qui répertorie les middlewares
spécifiques aux routes.
Ajoutez votre middleware au tableau $routeMiddleware . Par exemple, pour enregistrer
le middleware ‘CheckStatusMiddleware’, ajoutez la ligne suivante dans le tableau
$routeMiddleware :
4. Exercice d’application 3 :
Dans cet exercice nous allons :
1. Créer un Controller ProductController et les routes associées à chaque méthode.
php artisan make:controller ProductController
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
3. Modifier nos routes pour quelles pointent sur les différentes méthodes que nous avons
créé :
use App\Http\Controllers\ProductController;
Route::get('/',
[ProductController::class, 'index']
)->name('index');
Route::get('/formulaire-inscription-produit',
[ProductController::class, 'create']
)->name('create');
Route::get('/detail-produit/{id}',
[ProductController ::class, 'detail']
)->name('detail');
Route::get('/formulaire-modification-produit/{id}',
[ProductController::class, 'modifier']
)->name('modifier');
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE= nom_de_votre_base_de_donnees
DB_USERNAME= votre_nom_d_utilisateur
DB_PASSWORD= votre_mot_de_passe
DB_CONNECTION : spécifie le pilote de base de données à utiliser. Par défaut, Laravel est
configuré pour utiliser MySQL. Si vous utilisez une autre base de données telle que PostgreSQL
ou SQLite, vous pouvez ajuster cette valeur en conséquence.
DB_HOST : spécifie l'adresse IP ou le nom d'hôte du serveur de base de données. Par défaut,
il est configuré sur 127.0.0.1, ce qui correspond à la machine locale.
DB_PORT : spécifie le port sur lequel le serveur de base de données écoute. Par défaut, il est
configuré sur 3306 pour MySQL.
DB_DATABASE : spécifie le nom de votre base de données à laquelle Laravel se connectera.
DB_USERNAME : spécifie le nom d'utilisateur utilisé pour se connecter à la base de données.
DB_PASSWORD : spécifie le mot de passe associé à l'utilisateur de la base de données.
• Création de données :
Pour créer un nouvel enregistrement dans la base de données, vous pouvez créer une
instance du modèle correspondant et définir les valeurs des attributs, puis appeler la méthode
save(). Par exemple :
$user = new User;
$user->name = 'John Doe';
$user->email = 'john@example.com';
$user->save();
Vous pouvez également utiliser la méthode create() pour créer et sauvegarder un nouvel
enregistrement en une seule ligne :
$user = User::create([
'name' => 'John Doe',
'email' => 'john@example.com',
]);
• Récupération de données :
Pour récupérer des enregistrements de la base de données, vous pouvez utiliser plusieurs
méthodes mises à disposition par Eloquent. Voici quelques exemples courants :
Récupérer tous les enregistrements :
$users = User::all();
// ou
$users = User:: get ();
Vous pouvez également utiliser la méthode update() pour mettre à jour plusieurs
enregistrements en une seule ligne, en spécifiant les attributs à mettre à jour et les critères de
sélection :
User::where('age', '>', 18)->update(['status' => 'active']);
Suppression de données :
Pour supprimer un enregistrement, vous pouvez appeler la méthode delete() sur
l'instance du modèle. Par exemple :
$user = User::find(1);
$user->delete();
Exercice d’application 4
1. Configuration de la base de données dans Laravel.
Ddans le fichier ".env", on va spécifier les informations de configuration de notre base de
données, y compris le type de base de données, l'hôte, le nom de la base de données, le nom
d'utilisateur et le mot de passe.
DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=eshopper
DB_USERNAME=root
DB_PASSWORD=
• Lorsque vous récupérez un modèle, vous pouvez également charger ses relations pour
éviter les requêtes supplémentaires à la base de données.
• Utilisez la méthode `with ()` pour spécifier les relations à charger. Cela permet
d'améliorer les performances en évitant les requêtes supplémentaires.
3. Exercice d’application 5
Dans cet exercice nous allons créer les relations avec Eloquent entre nos différents
models et sectionner notre Template echopper pour les vues.
A. Relations avec Eloquent
1. Relation Eloquent Categorie et Produit.
Dans le modèle Categorie, définissez la relation "One To Many" avec la méthode produits()
:
use Illuminate\Database\Eloquent\Model;
Dans le modèle Produit , définissez la relation "Many To One" avec la méthode categorie()
:
namespace App\Models ;
use Illuminate\Database\Eloquent\Model;
namespace A pp \ Mode ls ;
Dans le modèle Produit, définissez la relation "Many To One" avec la méthode user() :
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Model;
Dans le modèle User , définissez la relation "Many To One" avec la méthode role() :
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
C:\laragon\www\shop-inp\database\migrations\
C:\laragon\www\shop-inp\database\migrations\
public function up()
{
Schema::create('users' , function (Blueprint $table) {
$table->bigIncrements ('id' );
$table->string('slug' );
$table->string('nom' );
$table->string('prenom' );
$table->string('email' );
$table->integer ('numero' );
$table->string('password' );
$table->unsignedBigInteger ('role_id' );
$table->foreign('role_id' )->references ('id' )->on('roles' );
$table->timestamps ();
});
}
C:\laragon\www\shop-inp\database\migrations\
public function up()
{
Schema::create('categories' , function (Blueprint $table) {
$table->bigIncrements ('id' );
$table->string('nom_categorie' );
$table->timestamps ();
});
}
C:\laragon\www\shop-inp\database\migrations\
public function up()
{
Schema::create('produits' , function (Blueprint $table) {
$table->bigIncrements ('id' );
$table->string('titre' );
$table->integer ('prix' );
$table->text ('descriptions' );
$table->string('image_couverture' );
$table->string('image_details' );
$table->unsignedBigInteger ('categorie_id' );
$table->unsignedBigInteger ('user_id' );
$table->foreign('categorie_id' )->references ('id' )->on('categories' );
$table->foreign('user_id' )->references ('id' )->on('users' );
$table->timestamps ();
});
}
B. Découpage du Template
Le découpage du template HTML en Laravel consiste à organiser et structurer le code HTML
de votre application en utilisant le moteur de templates Blade fourni par Laravel. Cela permet
de séparer la logique de présentation de la logique métier de votre application.
Master.blade.php
header.blade.php
footer.blade.php
Etape du découpage ;
1 : Création du dossier layouts et includes dans le dossier "resources/views".
2 : Création du fichier master.blade.php dans le dossier layouts.
3 : Création des fichier header.blade.php et footer.blade.php dans le dossier includes.
4 : Extraction du fichier eshopper.zip
5 : Déplacer les dossiers css, font, images et js dans le dossier ‘’public/’’ de notre projet.
6 : le fichier master.blade.php est le fichier maitre qui regroupe tous code et liens que tous les
fichiers esclaves ont en commun.
@include('includes.header')
@yield("content")
@include('includes.footer')
@extends("layouts.master")
@section("content")
<!-- contenu de la section -->
@endsection
Product::create($request->all());
4. Exercice d’application 5
Dans Laravel, Breeze est un package qui fournit une configuration préconfigurée pour
l'authentification et l'autorisation dans votre application. Il simplifie grandement la mise en
place de l'authentification utilisateur avec Laravel.
Voici les étapes pour mettre en place l'authentification et l'autorisation avec Breeze :
• Installer Breeze : Tout d'abord, vous devez installer le package Breeze. Ouvrez votre
terminal, accédez au répertoire de votre projet Laravel et exécutez la commande
suivante :
composer require laravel/breeze --dev
• Générer les fichiers d'authentification : Une fois que Breeze est installé, vous pouvez
générer les fichiers d'authentification nécessaires. Utilisez la commande artisan
suivante :
php artisan breeze:install
Cette commande générera les fichiers de routage, de contrôleur et d e vues nécessaires pour
l'authentification.
• Migrer la base de données : Après avoir généré les fichiers d'authentification, vous
devez migrer la base de données pour créer les tables nécessaires à l'authentification.
Utilisez la commande artisan suivante :
php artisan migrate
• Compiler les assets : Pour utiliser les styles et scripts CSS/JS fournis par Breeze, vous
devez compiler les assets. Utilisez la commande artisan suivante :
npm install && npm run dev
2. Upload de fichiers
Vous pouvez facilement gérer l'upload de fichiers à l'aide de la méthode store() de la classe
Request . Cette méthode permet de stocker un fichier uploadé dans le répertoire de stockage
configuré.
$file = $request->file('file');
$path = $file->store('uploads');
// Supprimer un fichier
Storage::delete('path/to/file.jpg');
// Renommer un fichier
Storage::move('path/to/oldfile.jpg', 'path/to/newfile.jpg');
// Copier un fichier
Storage::copy('path/to/sourcefile.jpg', 'path/to/destination.jpg');
// Supprimer un fichier
Storage::delete('path/to/file.jpg');
// Renommer un fichier
Storage::move('path/to/oldfile.jpg', 'path/to/newfile.jpg');
// Copier un fichier
Storage::copy('path/to/sourcefile.jpg', 'path/to/destination.jpg');
Séance 5 :
Module 9 : API et développement d'applications mobiles
Le développement d'applications mobiles implique souvent la création d'une API
(Application Programming Interface) qui permet à l'application mobile de communiquer avec
le serveur backend. Laravel facilite le développement d'API grâce à son architecture MVC et à
ses fonctionnalités intégrées.
Voici les étapes générales pour développer une API avec Laravel pour une application
mobile :
1. Configuration de l'API :
Dans Laravel, vous pouvez commencer par configurer les routes de votre API dans le
fichier routes/api.php . Vous pouvez définir les endpoints et les actions associées à chaque
endpoint, tels que la création, la lecture, la mise à jour et la suppression des ressources.
2. Contrôleurs de l'API :
Créez des contrôleurs dédiés pour gérer les différentes actions de votre API. Chaque
méthode dans le contrôleur correspondra à une action spécifique, comme la création d'une
ressource, la récupération d'une liste de ressources, la mise à jour d'une ressource, etc. Vous
pouvez retourner des réponses JSON depuis ces méthodes.
4. Authentification et autorisation :
Pour sécuriser votre API, vous pouvez utiliser les fonctionnalités d'authentification et
d'autorisation de Laravel. Laravel Breeze, Laravel Sanctum, ou Laravel Passport sont des
packages couramment utilisés pour gérer l'authentification des utilisateurs et la génération de
jetons d'accès (tokens) pour les requêtes API.
5. Réponses JSON :
Laravel facilite le retour de réponses JSON depuis vos contrôleurs. Vous pouvez utiliser
les méthodes response() et json() pour formater vos réponses. Vous pouvez également gérer
les codes de statut HTTP appropriés pour chaque requête.
6. Documentation de l'API :
Une documentation claire et complète est essentielle pour les développeurs
d'applications mobiles qui utiliseront votre API. Vous pouvez utiliser des outils tels que
Swagger, OpenAPI, ou Laravel API Documentation Generator pour générer automatiquement
la documentation de votre API à partir de vos commentaires de code.
7. Tests de l'API :
Il est recommandé de mettre en place des tests automatisés pour votre API afin de vous
assurer que toutes les fonctionnalités fonctionnent correctement. Laravel propose des
fonctionnalités intégrées pour les tests unitaires et les tests d'intégration.
Module 10 : Sécurité
Sécurité des applications Laravel
• Laravel offre de nombreuses fonctionnalités de sécurité intégrées pour protéger les
applications contre les attaques courantes.
• Par exemple, Laravel utilise le hachage de mots de passe sécurisé, les requêtes
préparées, la protection CSRF, la désactivation de l'exécution des scripts, etc.
Séance 6 :
Exercice d’application
Evaluation