Symfony 5 : Le guide complet

🔎 Plongez en profondeur dans le framework Symfony
🚀 Découvrez ses composants les plus importants en détails
💪 Consolidez votre pratique du PHP
🛒 Construisez un e-commerce de A à Z avec Symfony et Stripe !

De retour après 2 formations notées 5 étoiles ! 💖

J'ai déjà créé énormément de contenus autour de Symfony que ce soit sur YouTube, sur Udemy ou sur cette même plateforme.
Et fort des retours que j'ai obtenu et des mois de pratique de la pédagogie dans des Bootcamps et des formations aux développeurs, je reviens avec de nouvelles méthodes pédagogiques et de nouvelles techniques de montage !

Ce que vous allez apprendre avec moi 😊

📖 Comprendre les basiques du framework Symfony 5
🔎 Découvrir le processus de développement moderne avec PHP et Composer
🎨 Maitriser le langage Twig et ses subtilités
🔥 Comprendre réellement le fonctionnement de Doctrine pour les bases de données
🚀 Comprendre le point névralgique du Framework : le Container de Services

🖋 Créer des formulaires avec le composant Form
💪 Utiliser la puissance des services au sein du Framework et créer vos propres services
✨ Aller vers un code clair et évolutif en collant aux meilleures pratiques de la POO
💳 Utiliser l'API de paiement Stripe afin d'accepter les paiements par carte bleue
🛒 Gérer un panier en session et la prise de commande

🔐 Comprendre comment sécuriser vos applications (authentification, autorisations, rôles etc)
🚀 Déployer votre application Symfony chez Heroku
📧 Envoyer des emails avec le composant Mailer
⭐ Découvrir en détails les événements dans Symfony et dans Doctrine
▶ 
Et plein d'autres choses passionnantes 😁

Créer un e-commerce de A à Z avec le Framework Symfony

On n'apprend jamais mieux que par la pratique. Cette formation destinée à tous les développeurs qui veulent en savoir plus sur le Framework Symfony 5 vous permettra de créer étape après étape un véritable e-commerce sur lequel les utilisateurs pourront :
  • S'authentifier
  • Ajouter des produits dans leur panier
  • Passer une commande
  • Payer avec leur carte bleue via un formulaire intégré (Stripe)
  • De  plus, les administrateurs pourront gérer le catalogue. 
On passera donc par l'ensemble des étapes classiques de la création d'une application web.

Les notions sont distillées tout au long des vidéos et ne sont abordées que lorsqu'on en a vraiment besoin et qu'on peut donc les mettre immédiatement en pratique.

Alors embarquez avec moi et vous aurez alors des bases solides pour continuer par vous même votre apprentissage de toutes les subtilités du Framework !

Sommaire de la formation

A propos de cette formation (15 minutes)
Présentation de la formation
2 min
Ce que l'on va faire ensemble 😊
4 min
Mise en place de VSCode
4 min
Les outils nécessaires (PHP 7.2, Composer, Git ...)
4 min
Rendre PHP disponible dans la CMD de Windows
La CLI (ligne de commande) Symfony
Tirer profit au mieux de cette formation
3 min
Jouer les vidéos automatiquement (autoplay)
Rafraichissement : le PHP de nos jours (30 minutes)
Le serveur interne de PHP
4 min
L'autoloading (chargement automatique des classes)
9 min
Composer et l'autoloading
5 min
📖 Composer et les bibliothèques tierces
4 min
Installer des bibliothèques tierces avec Composer
6 min
📖 PHP moderne : Récapitulatif
2 min
Rafraichissement : le PHP de nos jours (30 minutes): Quiz
📖 Les commandes du développement moderne avec PHP
Présentation du framework Symfony (20 minutes)
📖 Qu'est-ce qu'un Framework au fait ?
3 min
📖 Présentation du projet Symfony
4 min
📖 L'architecture MVC dans le web, et avec Symfony 5
3 min
📖 Une spécificité de Symfony : La modularité
4 min
Créons notre application Symfony 5.1 !
6 min
Lancer le serveur avec la commande `symfony serve`
6 min
📖 Les commandes à connaître quand on débute avec la CLI de Symfony
Les bases de Symfony : HttpFoundation et Routing (45 minutes)
Premières pages : les Routes et les Controllers
6 min
HttpFoundation : Requête et Réponse HTTP !
9 min
Routes paramétrables : valeurs par défaut et contraintes
10 min
Contraintes de Routes
6 min
Configuration des Routes et fichiers YAML
2 min
Configurer les routes sous forme d'Annotations (@Route)
4 min
Symfony Flex : booster Composer et le rendre Surpuissant !
8 min
Routes, Controllers, HttpFoundation : Récapitulatif
3 min
Exercice : créez une page Hello World
2 min
Correction : créez une page Hello World
4 min
Les bases de Symfony : HttpFoundation et Routing (45 minutes): Quiz
📖 Fiche de révision : Routing, Controller et HttpFoundation
Les bases de Symfony : Le container de services (50 minutes)
Introduction au container de services de Symfony
8 min
Créez vos propres services !
7 min
📖 Comprendre le Container de Services de Symfony
4 min
Voir le Container de Services à l'oeuvre !
4 min
Les limites du Container : configuration des services
6 min
Utilisez des bibliothèques tierces avec le Container
5 min
📖 La différence entre une bibliothèque et un Bundle Symfony
7 min
📖 Container de Services : Récapitulatif
3 min
📖 Interlude : l'ArgumentResolver dans Symfony
4 min
Exercice #01 : Créez un service "Detector"
2 min
Correction #01 : Créez un service "Detector"
2 min
Exercice #02 : Configuration d'un seuil de TVA
2 min
Correction #02 : Configuration d'un seuil de TVA
2 min
Les bases de Symfony : Le container de services (50 minutes): Quiz
A la découverte de Twig ! (65 minutes)
📖 Introduction à Twig !
3 min
Notre premier template Twig
9 min
Twig : Les tags et les filtres
10 min
Exercice #01 : Boucle for et if
2 min
Correction #01 : Boucle for et if
2 min
Twig : Exploiter des tableaux associatifs ou des objets
3 min
Twig : Héritage de templates et système de blocks
7 min
Twig : Inclusions de templates
7 min
👌 Bonnes pratiques : créons une fonction render()
8 min
Découverte de la classe AbstractController
3 min
Twig : créons ensemble la page d'accueil du site
16 min
Twig : créons une barre de navigation
4 min
Twig : Récapitulatif
2 min
A la découverte de Twig ! (65 minutes): Quiz
Doctrine et les bases de données (1 heure 35 minutes)
📖 Introduction à Doctrine
6 min
Doctrine : Installation du Bundle (donc des services 😉)
4 min
📖 Introduction au système de Migrations
2 min
Création de la base de données
3 min
Créer une entité Product et la migration qui va avec
13 min
Découverte d'un Repository Doctrine
11 min
Manipuler des enregistrements avec le Manager de Doctrine
10 min
Exercice #01 : Créez une entité Category
2 min
Correction #01 : Créez une entité Category
3 min
Travailler et naviguer dans les migrations
5 min
📖 Doctrine : Premier récapitulatif
3 min
Créer des jeux de fausses données avec les Fixtures
6 min
Utiliser Faker pour plus de réalisme dans nos données
5 min
Enrichir Faker pour plus de réalisme encore
5 min
Créer de véritables Slugs avec le composant String
5 min
📖 Doctrine : Deuxième récapitulatif
2 min
Créer une association entre Product et Category
11 min
Ajouter un champ dans l'entité Product
6 min
Utiliser nos entités dans un template Twig
7 min
📖 Doctrine : Dernier récapitulatif
3 min
Doctrine et les bases de données (1 heure 35 minutes): Quiz
Symfony 5 et le Debug Pack (9 minutes)
Débugger dans Symfony avec le Debug Pack !
9 min
Twig : aller plus loin (35 minutes)
Créer la page d'une Category avec ses Products
13 min
Créer la page d'un Product
8 min
Ajouter un fil d'Ariane (Breadcrumb) sur nos pages
3 min
Routes "statiques" : le problème des URLs écrites en dur
3 min
👌 Génération des URLs avec l'UrlGenerator et la fonction path()
11 min
📖 Récapitulatif
2 min
Twig : aller plus loin (35 minutes): Quiz
Les formulaires dans Symfony 5 (1 heure 50 minutes)
📖 Introduction aux formulaires avec Symfony
2 min
Installer le composant symfony/form
3 min
Créer la page qui accueillera le formulaire de création d'un produit
3 min
Configurer un formulaire avec le FormBuilder
5 min
Configurer les champs du formulaire
10 min
Remplir un ChoiceType avec les données de la base
3 min
Utiliser les champs EntityType pour afficher les données de la base
6 min
Twig : Les fonctions de rendu pour les formulaires
7 min
Twig : Découverte des thèmes de formulaires
8 min
Twig : Les thèmes de formulaires livrés avec Symfony
5 min
📖 Formulaires : Premier récapitulatif
3 min
Soumission du formulaire et récupération des données
7 min
Récupérer les données sous la forme d'un objet précis (data_class)
6 min
Faire persister une entité issue d'un formulaire
3 min
👌 Créer une classe de formulaire
6 min
Form : les raccourcis offerts par l'AbstractController
5 min
Créer un formulaire de modification
9 min
Créer une Redirection après la soumission d'un formulaire
9 min
📖 Formulaires : Deuxième récapitulatif
2 min
Exercice #01 : Créez un CategoryController avec deux Routes
2 min
Correction #01 : Créez un CategoryController avec deux Routes
5 min
Exercice #02 : Créez le formulaire de création d'une catégorie
2 min
Correction #02 : Créez le formulaire de création d'une catégorie
6 min
Exercice #03 : Créez le formulaire de modification d'une catégorie
1 min
Correction #03 : Créez le formulaire de modification d'une catégorie
4 min
Les formulaires dans Symfony 5 (1 heure 50 minutes): Quiz
Aller plus loin avec le composant Form de Symfony (45 minutes)
📖 Le cycle de vie d'un Formulaire
4 min
Réagir aux événements lancés par le formulaire
10 min
Transformer les données d'un formulaire grâce aux événements
7 min
Transformer des données avec un DataTransformer
8 min
DataTransformer : factoriser le code dans une classe !
5 min
Créer ses propres types de champs !
12 min
📖 Récapitulatif
4 min
Versionning avec Git
1 min
Aller plus loin avec le composant Form de Symfony (45 minutes): Quiz
Validation des données (1 heure et 5 minutes)
Introduction à la validation des données avec Symfony
3 min
📖 Notions de base sur le composant Validator
2 min
Validation de données simples (scalaires)
9 min
Validation de données complexes (tableaux)
6 min
Validation d'objets grâce à YAML
5 min
Validation d'objets en PHP
6 min
Utiliser l'espace de noms Constraints (Assert)
3 min
Validation d'objets grâce aux annotations
3 min
Validation d'un formulaire
11 min
Les groupes de validation
8 min
Finitions et versionning avec Git
8 min
Exercice : validez les catégories !
2 min
Corrigé : validez les catégories !
4 min
📖 Récapitulatif
3 min
Validation des données (1 heure et 5 minutes): Quiz
Renforcement Twig : Mise en place de la navbar (16 minutes)
Mise en place de la navbar : Introduction
2 min
Twig : appeler un controller directement depuis un template
7 min
Twig : Injecter une variable globale dans nos templates
5 min
Mettre en place les liens utilisateurs dans la navbar
3 min
La sécurité : authentification (1 heure et 40 minutes)
📖 Introduction à la sécurité dans Symfony
2 min
📖 Firewalls : des régions politiques dans nos applications
2 min
Installation du composant Security
3 min
L'entité User pour représenter nos utilisateurs
11 min
Mise à jour des fixtures
4 min
Hasher les mots de passes pour plus de sécurité
7 min
📖 Introduction aux Authenticator de Symfony
3 min
La commande make:auth
4 min
Page de login et problèmes de routage
4 min
Jouer avec les priorités des routes
5 min
Formulaire de connexion (login)
5 min
Authenticator : la méthode supports()
5 min
Authenticator : compléter la procédure d'authentification
9 min
Les échecs possibles pendant l'authentification
5 min
Gérer les échecs / succès de l'authentification
3 min
Obtenir la raison de l'échec de l'authentification (AuthenticationUtils)
7 min
Modifier les messages d'erreur
7 min
📖 Premier récapitulatif
4 min
L'Authenticator "form_login" livré par Symfony
8 min
Gérer la déconnexion avec l'option "logout"
2 min
Mise en forme de la barre de navigation
3 min
📖 Deuxième récapitulatif
3 min
Interlude : les commandes essentielles (config:dump et debug:config)
6 min
La sécurité : autorisations et rôles (50 minutes)
📖 Introduction aux autorisations dans Symfony 5
2 min
La méthode "start()" de l'authenticator et les ACL
6 min
Découverte du service Security
7 min
Les raccourcis de l'AbstractController pour la sécurité
5 min
Contrôler les accès grâce à l'annotation @IsGranted
2 min
Contrôler l'accès à un objet en particulier
8 min
Encapsuler la logique d'accès dans un Voter
13 min
📖 Vraiment comprendre les Voters
3 min
Remise en place avant de passer à la suite
2 min
📖 Récapitulatif sur la sécurité dans Symfony 5
4 min
Versionning avec Git
1 min
La session dans Symfony 5 (1 heure et 30 minutes)
Mise en place du panier et découverte de la session
10 min
Sécuriser la procédure d'ajout d'un produit au panier
5 min
Se faire "livrer" la session grâce à la SessionInterface
2 min
Découverte des "bags" et du FlashBag
8 min
Afficher les message Flash dans Twig
8 min
Les raccourcis de l'AbstractController
3 min
Refactoring Twig et inclusion de templates
7 min
Afficher l'état du panier dans une page
11 min
📖 Premier récapitulatif
2 min
Refactoring : Créer un CartService qui embarque toute la gestion du panier
8 min
Refactoring : créer une classe qui représente un élément du panier
5 min
Rendre le CartService disponible dans nos templates Twig
2 min
Finalisations : incrémenter, décrémenter, supprimer les éléments du panier
15 min
Refactoring du CartService
8 min
Versionning avec Git
1 min
📖 Conclusion
2 min
Commandes : Doctrine et ManyToMany (1 heure et 45 minutes)
📖 Introduction
2 min
Créer l'entité Purchase (commande)
14 min
Afficher la liste des commandes d'un utilisateur
15 min
Ajouter une date de commande et gérer les problèmes de migration
6 min
Relation ManyToMany entre Purchase et Product
9 min
Refactoring de la liste de commandes
4 min
Créer une ManyToMany avec des informations supplémentaires
17 min
📖 Premier récapitulatif
2 min
Formulaire de commande
8 min
Le Controller qui va gérer le formulaire (1/2)
14 min
Le Controller qui va gérer le formulaire (2/2)
11 min
Refactoring du Controller
6 min
Finaliser le processus de commande
5 min
Versionning avec Git
2 min
📖 Conclusion
2 min
Refactoring : créer une classe pour persister la Purchase
7 min
Architecture et paiement Stripe ! (55 minutes)
📖 Introduction
4 min
Mise en place de la page de paiement
5 min
Créer une intention de paiement avec Stripe
6 min
Formulaire de carte bleue avec Stripe Elements
10 min
Finaliser le paiement après confirmation de Stripe
10 min
Refactoring : créer un StripeService
6 min
Définition du StripeService dans le fichier services.yaml
3 min
Refactoring du Javascript
6 min
Stocker les clés Stripes dans des variables d'environnement (.env)
5 min
Etudiez les Webhooks de Stripe !
3 min
Versionning avec Git
2 min
📖 Conclusion
1 min
Symfony et les événements (1 heure et 15 minutes)
Introduction aux événements dans Symfony
3 min
Prérequis : passages par valeur / référence
5 min
Le design pattern Mediator
2 min
Voir les événements et les réactions dans le profiler
7 min
Plongée dans le coeur de Symfony : le Kernel et les événements
13 min
Création de notre premier Listener
12 min
Découverte et création de notre premier Subscriber
8 min
Premier récapitulatif
4 min
Créons et propageons notre propre événement : le PurchaseEvent
5 min
Création d'un Subscriber qui enverra des emails
6 min
Rappels sur les principes SOLID
4 min
Versionning avec Git
2 min
Conclusion
3 min
Exercice : créer un événement ProductViewEvent et y réagir
2 min
Corrigé : créer un événement ProductViewEvent et y réagir
6 min
Doctrine et les événements (30 minutes)
Introduction au cycle de vie des entités
2 min
Automatismes dans les entités avec les Lifecycle Callbacks
11 min
Automatismes grâce aux Doctrine Listeners
8 min
Automatismes grâce au Entity Listeners
3 min
Conclusion et aide à la décision
3 min
Exercice : créer un automatisme avec Doctrine
2 min
Correction : créer un automatisme avec Doctrine
4 min
Versionning avec Git
2 min
Les emails avec le composant Mailer (à venir)
Symfony Mailer : introduction
3 min
Tester l'envoi des emails avec Mailtrap.io
2 min
Installation du composant Mailer
4 min
Envoyer notre premier email !
9 min
Créer des emails en HTML via Twig et le TemplatedEmail
5 min
Envoyer un email de confirmation lors d'une commande
13 min
Conclusion
3 min
Versionning avec Git
2 min
Etendre Twig avec de nouveaux filtres (à venir)
Montage en cours
Déployer Symfony 5 chez Heroku (à venir)
Montage en cours
Conclusion de la formation (à venir)
Montage en cours
Développeur web et formateur depuis plus de 11 ans, je forme les salariés et les étudiants sur des technologies telles que Symfony, React ou encore Angular !

▶ J'ai une chaîne YouTube qui connaît un certain succès et que tu peux consulter pour mieux connaître les contenus que je produis 😉