Cours Laravel
Formateur : Abdoussalam TINE
Développeur Informatique chargé des Applications & Données à CGF BOURSE
ISEP DD
Année : 2026
Cours Laravel
INTRODUCTION
Introduction — pourquoi ce cours ?
Ce cours introduit les étudiants au développement d’applications web modernes à l’aide du
framework PHP Laravel. Il permet d’acquérir les compétences nécessaires pour concevoir,
développer et déployer des applications web structurées, sécurisées et maintenables en
utilisant une architecture MVC.
À la fin de ce cours, l’étudiant sera capable de :
✓ Comprendre le fonctionnement du framework Laravel
✓ Concevoir une application web basée sur l’architecture MVC
✓ Gérer les routes, contrôleurs et vues (Blade)
✓ Manipuler les bases de données avec Eloquent ORM
✓ Créer et exécuter des migrations et seeders
✓ Développer des API REST simples
✓ Implémenter un système d’authentification
✓ Appliquer les bonnes pratiques de développement web
Cours Laravel
INTRODUCTION
langage compilé et un langage interprété
Un langage compilé est un langage dont le code est transformé entièrement en langage
machine avant d’être exécuté. Cette transformation est faite par un programme appelé
compilateur. Une fois compilé, le programme devient un fichier exécutable que
l’ordinateur peut lancer directement. Cela rend l’exécution plus rapide.
Exemples : C, C++, Go, Rust.
Un langage interprété, lui, est exécuté ligne par ligne par un programme appelé
interpréteur. Le code n’est pas transformé en un exécutable, il est simplement lu et
exécuté au fur et à mesure. Cela facilite le développement, mais l’exécution est souvent
moins rapide que celle d’un langage compilé.
Exemples : PHP, Python, JavaScript.
Cours Laravel
CONTEXTE
installation de Laravel
Laravel est un framework PHP moderne qui simplifie le développement d’applications
web grâce à une structure claire et des outils intégrés. Avant de commencer à
développer avec Laravel, il est essentiel de mettre en place un environnement de
travail adapté comprenant PHP, Composer, ainsi que les extensions nécessaires.
L’installation de Laravel peut se faire de deux manières principales : via Composer
(méthode recommandée) ou via le Laravel Installer. Elle nécessite également une
configuration correcte de PHP afin de garantir le bon fonctionnement des
dépendances et des fonctionnalités du framework, notamment la gestion des bases
de données et des extensions comme OpenSSL et Zip.
Cette étape d’installation constitue la base de tout projet Laravel et permet de
préparer un environnement stable pour le développement d’applications web
performantes et sécurisées.
Cours Laravel
CONTEXTE
Outils
PHP est le langage de programmation principal utilisé par Laravel.
C’est lui qui exécute le code côté serveur et permet de générer des pages web
dynamiques.
Dans Laravel, PHP sert à :
✓ traiter les requêtes utilisateur
✓ exécuter la logique métier (contrôleurs, services)
✓ communiquer avec la base de données
✓ générer les réponses (HTML, JSON, etc.)
NB : Sans PHP, Laravel ne peut pas fonctionner.
Site : [Link]
Téléchargement : [Link]
[Link] (Version 8.3.30 VS16 x64 Non Thread Safe)
Commande de verification :
➢ php --version
Cours Laravel
CONTEXTE
Outils
Composer est un gestionnaire de dépendances pour PHP.
Il permet de :
✓ installer Laravel et ses bibliothèques
✓ gérer automatiquement les packages nécessaires au projet
✓ maintenir les versions des dépendances
✓ charger automatiquement les classes PHP (autoload)
NB : En résumé, Composer est l’outil qui installe et organise tout l’écosystème
Laravel.
Site : [Link]
Téléchargement : [Link]
Commande de verification :
➢ composer –v ou composer --version
Cours Laravel
CONTEXTE
Outils
Laravel est un framework PHP open-source qui facilite le développement
d’applications web.
Il fournit une structure prête à l’emploi avec :
✓ un système de routage (gestion des URLs)
✓ des contrôleurs pour organiser le code
✓ un moteur de vues (Blade)
✓ un ORM (Eloquent) pour la base de données
✓ un système d’authentification intégré
NB : Laravel permet de développer plus vite, avec un code propre, sécurisé et
organisé.
Site Officiel de Laravel : [Link]
Installation Laravel : Installation | Laravel 13.x - The clean stack for Artisans and
agents (Version 13)
Commande de verification :
➢ Laravel --version
Cours Laravel
CONTEXTE
Extension PHP nécessaires
Ouvrez le fichier se trouvant dans C:\Program Files\php-8.3.30\[Link] puis d’activer
les extensions ci-dessous :
➢ extension_dir = "ext"
➢ extension=curl
➢ extension=mbstring
➢ extension=fileinfo
➢ extension=intl
➢ extension=openssl
➢ extension=zip
➢ extension=mysqli
➢ extension=pdo_mysql
➢ extension=pdo_sqlite
➢ extension=sqlite3
NB : Pour connaître le chemin du fichier [Link], tapez cette commande dans la
console
➢Coursphp --ini
Laravel
CONTEXTE
Commandes après installation
➢composer global require laravel/installer
➢laravel new example-app
➢cd daw (nom de votre application)
➢npm install --ignore-scripts && npm run build
➢php artisan migrate
➢composer run dev ou php artisan serve
Cours Laravel
CONTEXTE
Structure de l’application
Cours Laravel
MODULE A
HTTP, web & architecture MVC
Cours Laravel
MODULE A
HTTP et MVC : le vocabulaire commun
❑ Le web repose sur un échange simple : le client envoie une requête HTTP (méthode, URL,
en-têtes, parfois un corps), le serveur répond avec un code de statut et un contenu (HTML,
JSON, etc.).
Cours Laravel
MODULE A
HTTP et MVC : le vocabulaire commun
La méthode HTTP indique l’action que le client souhaite effectuer sur une
ressource identifiée par une URI. Elle permet au serveur de comprendre l’intention
exacte du client. Les principales méthodes utilisées dans les API sont :
GET : lire ou récupérer une ressource.
POST : créer ou envoyer des données au serveur.
PUT : remplacer entièrement une ressource.
PATCH : mettre à jour partiellement une ressource.
DELETE : supprimer une ressource.
En HTML classique, seuls GET et POST
existent nativement ; les API REST et
Laravel exposent tous les verbes sur
des routes dédiées.
Cours Laravel
MODULE A
HTTP et MVC : le vocabulaire commun
❑ Le patron MVC sépare les responsabilités :
✓ le modèle porte les données et les règles métier,
✓ la vue présente le résultat à l’utilisateur,
✓ le contrôleur orchestre la requête. Laravel ajoute routes, middleware, Eloquent et
Blade, mais la logique reste la même.
Imagine un restaurant :
❑ Controller = le serveur
Il prend la commande et apporte le plat.
❑ Model = le chef en cuisine
Il prépare les données (la nourriture).
❑ View = l’assiette
La présentation finale du plat.
Cours Laravel
MODULE A
Flux MVC dans Laravel (schéma texte)
Requête → réponse
Cours Laravel
MODULE B
Introduction Laravel & écosystème
Cours Laravel
MODULE B
Artisan
Artisan est l’interface en ligne de commande de Laravel.
C’est un outil puissant qui permet d’automatiser et
d’accélérer le développement.
En d’autres termes :
Artisan = le “couteau suisse” de Laravel en ligne de
commande.
Il permet de :
❑ créer des fichiers automatiquement (controllers,
models, migrations…)
❑ gérer la base de données
❑ lancer un serveur local
❑ exécuter des tâches planifiées
❑ vider le cache
❑ Etc…
Exemple :
php artisan serve
La commande pour voir la liste des commandes disponibles
php artisan list
Cours Laravel
MODULE B
Structure de Laravel
Il est important de d’abord analyser la structure des
dossiers pour savoir comment la hiérarchie fonctionne
(Laravel 13).
Le dossier app contient le dossier http
(Controllers), Models, Providers
Booststrap : Ce dossier contient les
fichiers qui permettent de démarrer
et initialiser Laravel
Config : Ce dossier contient les fichiers
de configuration (Base de données,
mail, cache etc…)
Cours Laravel
MODULE B
Structure de Laravel
Il est important de d’abord analyser la structure des
dossiers pour savoir comment la hiérarchie fonctionne
(Laravel 13).
Database : Gestion de la base de
données (migrations, seeders,
factories)
Public : Point d’entrée de l’application
accessible depuis le navigateur.
Resources : Fichiers frontend (Vues
Blade, CSS, JavaScript)
Route : Définition des routes (URL de
l’application)
Storage : Stockage interne (logs,
cache, fichiers uploadés
.env : Fichier de configuration de
l’environnement (DB, etc…)
Cours Laravel
MODULE C
Routing et Views
Cours Laravel
MODULE C
Des Routes aux Views : Premiers Pas avec Laravel
Laravel s’appuie sur les mêmes principes solides qui ont fait sa réputation :
un framework PHP moderne, lisible et hautement productif, reposant sur une
architecture MVC claire et structurée. Grâce à Artisan, sa ligne de commande
intégrée, le développement est accéléré et standardisé, tandis que le moteur
de templates Blade offre une manière élégante et efficace de gérer l’affichage.
Objectif de cette séance : apprendre à construire des pages web en définissant
des routes propres, et afficher des données dynamiques dans les vues à l’aide
de Blade.
Cours Laravel
MODULE C
Rappel MVC
❑Model : representation des donnees.
❑View : affichage HTML (Blade).
❑Controller : logique applicative.
Cours Laravel
MODULE C
Dossiers a connaitre
❑routes/[Link] : routes web.
❑resources/views : fichiers Blade.
❑app/Http/Controllers : controllers (plus tard).
❑public : point d’entré web.
Cours Laravel
MODULE C
Routing de base dans routes/[Link]
❑routes/[Link] : routes web.
❑resources/views : fichiers Blade.
❑app/Http/Controllers : controllers (plus tard).
❑public : point d’entré web.
Cours Laravel
MODULE C
Routing de base dans routes/[Link]
Exemple 1 : route minimale
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return 'Bienvenue Laravel 13';
});
Cours Laravel
MODULE C
Routing de base dans routes/[Link]
Exemple 2 : plusieurs verbes HTTP
Route::get('/courses', function () {
return 'Liste des cours';
});
Route::post('/courses', function () {
return 'Creation cours';
});
Route::put('/courses/{id}', function (string $id) {
return "Mise a jour cours $id";
});
Route::delete('/courses/{id}', function (string $id) {
return "Suppression cours $id";
});
Cours Laravel
MODULE C
Parametres de route
Parametre obligatoire
Route::get('/student/{id}', function (string $id) {
return "Etudiant $id";
});
Parametre optionnel
Route::get('/hello/{name?}', function (?string $name = 'John') {
return "Hello $name";
});
Cours Laravel
MODULE C
Parametres de route
Contraintes
Route::get('/student/{id}', function (string $id) {
return "ID: $id";
})->whereNumber('id');
Route::get('/group/{name}', function (string $name) {
return "Groupe: $name";
})->whereAlpha('name');
Cours Laravel
MODULE C
Routes nommees
Les routes nommees evitent de coder des URLs en dur.
Route::get('/dashboard', function () {
return 'Dashboard';
})->name('dashboard’);
Generer une URL :
$url = route('dashboard’);
Avec parametres :
Route::get('/students/{id}', function (string $id) {
return "Student $id";
})->name('[Link]’);
$url = route('[Link]', ['id' => 7]);
Cours Laravel
MODULE C
Introduction Views depuis les routes
Exemple 1 : route qui retourne une view avec données
Route::get('/welcome', function () {
return view('welcome', [
'title' => 'Bienvenue',
'teacher' => 'Prof Laravel',
]);
});
resources/views/[Link]
<h1>{{ $title }}</h1>
<p>Formateur: {{ $teacher }}</p>
Cours Laravel
MODULE C
Introduction Views depuis les routes
Exemple 2 : route avec parametre + affichage
Route::get('/students/{id}', function (string $id) {
return view('[Link]', [
'student' => [
'id' => $id,
'name' => 'Etudiant '.$id,
'email' => 'student'.$id.'@[Link]',
],
]);
})->name('[Link]’);
resources/views/students/[Link]
<h2>Fiche etudiant</h2>
<p>ID: {{ $student['id'] }}</p>
<p>Nom: {{ $student['name'] }}</p>
<p>Email: {{ $student['email'] }}</p>
Cours Laravel
MODULE C
Introduction Views depuis les routes
Exemple 3 : liste dans Blade avec @if … @endif
Route::get('/courses/list', function () {
return view('[Link]', [
'isWeekend' => true,
]);
});
resources/views/students/[Link]
@if ($isWeekend)
<p>Session weekend.</p>
@endif
Cours Laravel
MODULE C
Introduction Views depuis les routes
Exemple 4 : liste dans Blade avec @foreach … @endforeach
Route::get('/courses/list', function () {
return view('[Link]', [
'courses' => ['Laravel', 'PHP', 'SQL', 'JavaScript'],
]);
});
resources/views/courses/[Link]
<h2>Liste des cours</h2>
<ul>
@foreach ($courses as $course)
<li>{{ $course }}</li>
@endforeach
</ul>
Cours Laravel
MODULE C
Mini TP
❑ Creer la route /hello qui retourne un texte.
❑ Creer /student/{id} avec contrainte whereNumber.
❑ Creer une route nommée dashboard.
❑ Creer un groupe admin avec prefix + name.
❑ Creer une view students/[Link].
❑ Depuis la route /student/{id}, envoyer un tableau student
vers la view.
❑ Afficher une liste de modules avec @foreach.
Cours Laravel
MODULE D
Controllers
Cours Laravel
MODULE D
Controllers
Plan du cours
❑ Pourquoi utiliser des controllers
❑ Creer un controller avec Artisan
❑ Controller de base et liaison avec les routes
❑ Retourner une vue depuis un controller
❑ Controllers ressource (CRUD) : introduction
Cours Laravel
MODULE D
Introduction
Au début, on peut écrire toute la logique dans des closures dans
routes/[Link] :
Route::get('/hello', function () {
return 'Bonjour';
});
Quand l’application grossit, ce fichier devient difficile a lire.
Laravel propose les controllers : des classes PHP qui regroupent la
logique liée a un sujet (utilisateurs, articles, contact, etc.).
Par défaut, les controllers sont dans le dossier :
app/Http/Controllers
Un controller peut contenir plusieurs méthodes (fonctions) publiques.
Chaque méthode répond a une route (souvent une URL + une méthode
HTTP).
Cours Laravel
MODULE D
Creer un controller avec Artisan
Commande de base :
➢ php artisan make:controller NomDuController
Exemple pour un controller qui gère les utilisateurs :
➢ php artisan make:controller UserController
Cela crée le fichier app/Http/Controllers/[Link].
Cours Laravel
MODULE D
Exemple de controller simple
Voici un controller avec une méthode show qui affiche le profil d’un utilisateur. Pour
débuter sans base de données, on peut passer un tableau fictif.
<?php
namespace App\Http\Controllers;
class UserController extends Controller
{
public function show(string $id
{
return view('[Link]', [
'user' => [
'id' => $id,
'name' => 'Utilisateur '.$id,
'email' => 'user'.$id.'@[Link]',
],
]);
}
}
Cours Laravel
MODULE D
Affichage dans la view
Fichier vue resources/views/user/[Link] :
<h1>Profil</h1>
<p>Nom : {{ $user['name'] }}</p>
<p>Email : {{ $user['email'] }}</p>
Cours Laravel
MODULE D
Lier une route au controller
Dans routes/[Link] :
use App\Http\Controllers\UserController;
use Illuminate\Support\Facades\Route;
Route::get('/user/{id}', [UserController::class, 'show’]);
Quand une requête correspond a /user/5,
Laravel appelle UserController::show et passe la valeur du segment {id}
a la méthode show (ici string $id vaut "5").
Cours Laravel
MODULE D
Controllers ressource (CRUD en une ligne de routes)
Pour une ressource (ex. photos), Laravel peut generer un controller avec les methodes
index, create, store, show, edit, update, destroy.
php artisan make:controller PhotoController --resource
Enregistrement des routes :
use App\Http\Controllers\PhotoController;
Route::resource('photos', PhotoController::class);
Cela crée plusieurs routes nommées (ex. [Link], [Link], etc.).
Cours Laravel
MODULE D
Controllers ressource (CRUD)
Cela crée plusieurs routes nommées (ex. [Link], [Link], etc.).
Verbe HTTP URI Action Nom de route
GET /photos index [Link]
GET /photos/create create [Link]
POST /photos store [Link]
GET /photos/{photo} show [Link]
GET /photos/{photo}/edit edit [Link]
PUT/PATCH /photos/{photo} update [Link]
DELETE /photos/{photo} destroy [Link]
Routes supplémentaires : les déclarer avant Route::resource, sinon la route
photos/{photo} peut intercepter votre URL personnalisée.
Route::get('/photos/popular', [PhotoController::class, 'popular’]);
Route::resource('photos', PhotoController::class);
Cours Laravel
MODULE D
Mini TP
❑ Créer ContactController avec php artisan make:controller ContactController.
❑ Ajouter une méthode index qui retourne view('contact', ['title' => 'Contact']).
❑ Créer resources/views/[Link] avec {{ $title }}.
❑ Dans routes/[Link], lier GET /contact a [ContactController::class, 'index'] avec un
nom de route contact.
❑ Ajouter une méthode show(string $id) et la route GET /messages/{id}.
Cours Laravel
MODULE E
Views Blade + Assets
Cours Laravel
MODULE E
Views Blade + Assets
Plan du cours
❑ Comprendre le rôle des vues Blade
❑ Maitriser extends / section / yield / include
❑ Ajouter des assets dans le layout
❑ Eviter les erreurs fréquentes de structure
Cours Laravel
MODULE E
Views Blade + Assets
Cours Laravel
MODULE E
Vue
Une vue est un fichier qui mélange du PHP, du HTML et
la syntaxe Blade.
Blade ajoute des espaces réservés (variables, directives)
pour le contenu dynamique et sert à décrire la structure et
la mise en page de la page.
Lorsqu’un utilisateur accède à l’application, Laravel génère
la page à partir de la vue et envoie le HTML au navigateur.
Dans un projet Laravel, les vues se trouvent dans le
dossier resources/views.
Cours Laravel
MODULE E
Création d’une vue
Pour créer une vue dans Laravel, procédez comme suit :
1. Ouvrez le dossier resources/views de votre projet Laravel.
2. Créez un fichier avec l’extension .[Link]. Laravel utilise
alors le moteur de templates Blade pour traiter ce fichier.
3. Dans ce fichier, rédigez la structure de la page en HTML, et
ajoutez si besoin du PHP et de la syntaxe Blade pour la mise
en forme et la logique d’affichage.
4. Pour le contenu dynamique, utilisez des espaces
réservés Blade, par exemple {{ $variable }} ou des directives
comme @if, @foreach, etc.
5. Enregistrez le fichier.
Cours Laravel
MODULE E
Utiliser les layouts
Dans Laravel, une mise en page (layout) est un modèle de base qui
définit la structure générale d’une page web.
Elle comprend généralement les balises HTML <head> et <body>, et peut
inclure :
❑ des liens vers des fichiers CSS et JavaScript,
❑ des éléments communs tels que l’en-tête, le pied de page ou le
menu de navigation.
Le layout contient également des espaces réservés (placeholders)
destinés à recevoir du contenu dynamique, comme le titre de la page ou
le contenu principal.
Pour créer une mise en page, il suffit de créer un nouveau fichier de vue
dans le répertoire resources/views et d’y définir la structure HTML ainsi
que les zones réservées au contenu.
Cours Laravel
MODULE E
Utiliser les layouts
Voici un exemple de modèle de mise en page :
❑ [Link] = gabarit commun : ce
qui ne change pas (HTML de base,
menu, pied de page) est écrit une
seule fois.
❑ @yield('title', 'Mon site') =
emplacement du titre d’onglet valeur
par défaut : « Mon site ».
❑ <header> = bandeau du haut (liens
Accueil / Contact), pareil sur toutes les
pages qui utilisent ce layout.
❑ @yield('content') = zone variable :
chaque page y injecte son contenu
via @section('content’).
❑ <footer> = pied de page commun à
ces pages.
Cours Laravel
MODULE E
Utiliser les layouts
Pour utiliser cette mise en page dans une vue, la
mise en page peut être étendue et les sections
peuvent être définies comme suit :
❑ @extends('[Link]’) = Cette
page s’affiche dans le
layout layouts/[Link] (menu + pied de
page déjà définis là).
❑ @section('title', 'Profil’) = Remplit
le @yield('title') du layout : l’onglet du
navigateur affiche « Profil ».
❑ @section('content') … @endsection = Remplit
le @yield('content') du layout : c’est le corps de
la page (titre, ID, nom).
❑ {{ $user['id'] }} et {{ $user['name'] }} =
Affichent les données envoyées par le contrôleur
Cours Laravel
MODULE D
Mini TP
Route
Créer une route GET /a-propos (nom de route : about).
Contrôleur
Soit une méthode about() dans un contrôleur existant (ex. UserController ou
un PageController dédié), soit une closure dans [Link] si le cours l’autorise.
La réponse doit être return view('[Link]', [...]) avec au moins une variable : ['titre' => 'À
propos de nous'] (tu peux en ajouter d’autres).
Vue
Fichier : resources/views/pages/[Link].
Utiliser @extends('[Link]').
Remplir @section('title', ...) (ex. le même texte que titre ou un libellé fixe).
Dans @section('content') : un <h1> + un paragraphe qui affiche le texte passé par le
contrôleur ({{ $titre }} ou une autre variable).
@include
Créer un partial resources/views/partials/[Link] qui affiche une ligne du type : «
Dernière mise à jour : » + une date en dur ou une variable $annee passée depuis la vue about.
Dans [Link], inclure ce partial avec @include(...) et les bonnes données.
Navigation
Dans partials/[Link], ajouter un lien vers la page à propos en
utilisant route('about')
Cours Laravel