Module 2Programmer avec Laravel
Chapitre 10 sur 10
Examen blanc et fiche mémo
Un examen blanc corrigé sur 20 points et la fiche mémo des parties 1 et 2.
- ≈ 65 min
- 1 leçon
- 2 exercices
- TP
Objectifs
Avec ce chapitre, tu sauras…
- t'entraîner sur un sujet de 20 points qui couvre les parties 1 et 2 (2 heures) ;
- réviser tout le cours avec la fiche mémo.
Leçon 1
Le sujet : « Riad Events »
Une agence de Marrakech veut un petit site Laravel pour présenter ses événements (concerts, ateliers) et recevoir des inscriptions.
Partie C · Requête, réponse et vue (7 points)
(1) Écris le formulaire d'inscription (nom, email, nombre de places) en POST vers /inscriptions, avec la protection CSRF et old(). (2 pts) (2) Écris la méthode store(Request $request) qui : si le nom est vide, revient au formulaire avec la saisie ; sinon redirige vers /evenements avec le message « Inscription enregistrée ». (2 pts) (3) Écris la vue evenements/index.blade.php qui hérite d'un layout, affiche le message flashé et la liste des événements avec @forelse. (2 pts) (4) Écris une route /api/evenements qui renvoie la liste en JSON. (1 pt)
Exercices
Partie A · Questions de cours (6 points)
(1) Qu'est-ce qu'un framework ? Donne trois raisons de l'utiliser. (1,5 pt) (2) Explique MVC en 4 étapes. (1,5 pt) (3) Quel est le seul dossier accessible depuis le navigateur ? Pourquoi ? (1 pt) (4) Qu'est-ce qu'un middleware ? Donne un exemple. (1 pt) (5) Explique l'attaque CSRF et la protection de Laravel. (1 pt)
Partie B · Routes et contrôleur (7 points)
(1) Donne la commande qui crée EvenementController avec les 7 méthodes, puis la route de ressource. (1,5 pt) (2) Écris le tableau des 7 routes créées (verbe, URI, action, nom). (2 pts) (3) Écris une route GET /evenements/{ville?} qui affiche « Événements à … » ou « Tous les événements ». (1,5 pt) (4) Écris un groupe de routes avec le préfixe admin et le middleware auth, contenant GET / et GET /inscriptions. (2 pts)
L'essentiel du chapitre
À retenir
- Framework : boîte à outils + méthode ; rapidité, organisation, maintenabilité ; Laravel (Eloquent, Blade, Artisan), Symfony (Doctrine, Twig), Laminas, Yii ; Composer (dépendances), Packagist.
- MVC : Modèle (données), Vue (affichage), Contrôleur (intermédiaire).
- Installation : PHP + extensions (
php.ini), Composer,laravel new nomoucomposer create-project laravel/laravel nom; dossiersapp,config,database,public(seul accessible),resources/views,routes,storage;.env; Artisan :serve,route:list,make:model,migrate;http://localhost:8000. - Routes :
Route::get/post/put/patch/delete/match/any,redirect,view,{id},{name?},->name(),route(), groupesprefix/middleware, liaison de modèle,fallback,@method,route:cache. - Middlewares :
make:middleware,handle($request, $next),return $next($request);Kernel.php($middleware,$routeMiddleware,$middlewareGroups,$middlewarePriority) ; paramètresrole:editor;terminate. - CSRF :
@csrf(_token), erreur 419,$except,X-CSRF-TOKEN,X-XSRF-TOKEN. - Contrôleurs :
make:controller,[Classe::class, 'methode'],__invoke,--resource(7 actions : index, create, store, show, edit, update, destroy),apiResource,only/except, injection de dépendances. - Requêtes :
input,query,all,only,except,has,filled,boolean,old(),withInput(),file()->store(),ip(),path(). - Réponses :
response($c, $code),json(),download(),file(),redirect()->route()->with(),back(),away(), cookies, macros. - Vues :
resources/views/*.blade.php,view('dossier.vue', [...]),with(),View::share,View::composer,view:cache; Blade :{{ }},@if,@foreach,@forelse,@extends,@section,@yield,@include. - Laravel 13 : PHP 8.3 ;
bootstrap/app.phpremplaceKernel.phpetRouteServiceProvider.