• 99 € ou 3 paiements mensuels de 35 €

Symfony 5 par la pratique

🔎 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
🔐 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 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

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)

Bienvenue dans cette toute nouvelle formation sur Symfony 5 ! 
Présentation de la formation
Aperçu
Ce que l'on va faire ensemble 😊
Aperçu
Mise en place de VSCode
Aperçu
Les outils nécessaires (PHP 7.2, Composer, Git ...)
Aperçu
Rendre PHP disponible dans la CMD de Windows
Aperçu
La CLI (ligne de commande) Symfony
Aperçu
Tirer profit au mieux de cette formation
Aperçu
Jouer les vidéos automatiquement (autoplay)
Aperçu

Rafraichissement : le PHP de nos jours (30 minutes)

Lors de mes dernières formations, j'ai vu un certain nombre d'étudiants qui étaient "de vieux routards" du PHP et qui ne comprenaient pas forcément le fonctionnement du "PHP moderne".

Cette section leur est dédiée (ainsi qu'aux débutants à qui certains rappels ne feront pas de mal).

Amusez vous bien et surtout prenez du plaisir à apprendre 💪😊
Le serveur interne de PHP
Aperçu
L'autoloading (chargement automatique des classes)
Aperçu
Composer et l'autoloading
Aperçu
📖 Composer et les bibliothèques tierces
Aperçu
Installer des bibliothèques tierces avec Composer
Aperçu
📖 PHP moderne : Récapitulatif
Aperçu
Rafraichissement : le PHP de nos jours (30 minutes): Quiz
📖 Les commandes du développement moderne avec PHP
Aperçu

Présentation du framework Symfony (20 minutes)

📖 Qu'est-ce qu'un Framework au fait ?
Aperçu
📖 Présentation du projet Symfony
Aperçu
📖 L'architecture MVC dans le web, et avec Symfony 5
Aperçu
📖 Une spécificité de Symfony : La modularité
Aperçu
Créons notre application Symfony 5.1 !
Aperçu
Lancer le serveur avec la commande `symfony serve`
Aperçu
📖 Les commandes à connaître quand on débute avec la CLI de Symfony
Aperçu

Les bases de Symfony : HttpFoundation et Routing (45 minutes)

Premières pages : les Routes et les Controllers
Aperçu
HttpFoundation : Requête et Réponse HTTP !
Aperçu
Routes paramétrables : valeurs par défaut et contraintes
Aperçu
Contraintes de Routes
Aperçu
Configuration des Routes et fichiers YAML
Aperçu
Configurer les routes sous forme d'Annotations (@Route)
Aperçu
Symfony Flex : booster Composer et le rendre Surpuissant !
Aperçu
Routes, Controllers, HttpFoundation : Récapitulatif
Aperçu
Exercice : créez une page Hello World
Aperçu
Correction : créez une page Hello World
Aperçu
Les bases de Symfony : HttpFoundation et Routing (45 minutes): Quiz
📖 Fiche de révision : Routing, Controller et HttpFoundation
Aperçu

Les bases de Symfony : Le container de services (50 minutes)

Introduction au container de services de Symfony
Aperçu
Créez vos propres services !
Aperçu
📖 Comprendre le Container de Services de Symfony
Aperçu
Voir le Container de Services à l'oeuvre !
Les limites du Container : configuration des services
Utilisez des bibliothèques tierces avec le Container
📖 La différence entre une bibliothèque et un Bundle Symfony
📖 Container de Services : Récapitulatif
📖 Interlude : l'ArgumentResolver dans Symfony
Exercice #01 : Créez un service "Detector"
Correction #01 : Créez un service "Detector"
Exercice #02 : Configuration d'un seuil de TVA
Correction #02 : Configuration d'un seuil de TVA
Les bases de Symfony : Le container de services (50 minutes): Quiz

A la découverte de Twig ! (65 minutes)

📖 Introduction à Twig !
Notre premier template Twig
Twig : Les tags et les filtres
Exercice #01 : Boucle for et if
Correction #01 : Boucle for et if
Twig : Exploiter des tableaux associatifs ou des objets
Aperçu
Twig : Héritage de templates et système de blocks
Twig : Inclusions de templates
👌 Bonnes pratiques : créons une fonction render()
Découverte de la classe AbstractController
Twig : créons ensemble la page d'accueil du site
Twig : créons une barre de navigation
Twig : Récapitulatif
A la découverte de Twig ! (65 minutes): Quiz

Doctrine et les bases de données (1 heure 35 minutes)

📖 Introduction à Doctrine
Aperçu
Doctrine : Installation du Bundle (donc des services 😉)
📖 Introduction au système de Migrations
Création de la base de données
Créer une entité Product et la migration qui va avec
Découverte d'un Repository Doctrine
Manipuler des enregistrements avec le Manager de Doctrine
Exercice #01 : Créez une entité Category
Correction #01 : Créez une entité Category
Travailler et naviguer dans les migrations
📖 Doctrine : Premier récapitulatif
Créer des jeux de fausses données avec les Fixtures
Attention : mise à jour concernant Faker
Utiliser Faker pour plus de réalisme dans nos données
Enrichir Faker pour plus de réalisme encore
Créer de véritables Slugs avec le composant String
Aperçu
📖 Doctrine : Deuxième récapitulatif
Créer une association entre Product et Category
Ajouter un champ dans l'entité Product
Utiliser nos entités dans un template Twig
📖 Doctrine : Dernier récapitulatif
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 !

Twig : aller plus loin (35 minutes)

Créer la page d'une Category avec ses Products
Créer la page d'un Product
Ajouter un fil d'Ariane (Breadcrumb) sur nos pages
Routes "statiques" : le problème des URLs écrites en dur
Aperçu
👌 Génération des URLs avec l'UrlGenerator et la fonction path()
📖 Récapitulatif
Twig : aller plus loin (35 minutes): Quiz

Les formulaires dans Symfony 5 (1 heure 50 minutes)

📖 Introduction aux formulaires avec Symfony
Installer le composant symfony/form
Aperçu
Créer la page qui accueillera le formulaire de création d'un produit
Configurer un formulaire avec le FormBuilder
Configurer les champs du formulaire
Remplir un ChoiceType avec les données de la base
Utiliser les champs EntityType pour afficher les données de la base
Twig : Les fonctions de rendu pour les formulaires
Twig : Découverte des thèmes de formulaires
Twig : Les thèmes de formulaires livrés avec Symfony
📖 Formulaires : Premier récapitulatif
Soumission du formulaire et récupération des données
Récupérer les données sous la forme d'un objet précis (data_class)
Aperçu
Faire persister une entité issue d'un formulaire
👌 Créer une classe de formulaire
Form : les raccourcis offerts par l'AbstractController
Créer un formulaire de modification
Créer une Redirection après la soumission d'un formulaire
📖 Formulaires : Deuxième récapitulatif
Exercice #01 : Créez un CategoryController avec deux Routes
Correction #01 : Créez un CategoryController avec deux Routes
Exercice #02 : Créez le formulaire de création d'une catégorie
Correction #02 : Créez le formulaire de création d'une catégorie
Exercice #03 : Créez le formulaire de modification d'une catégorie
Correction #03 : Créez le formulaire de modification d'une catégorie
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
Aperçu
Réagir aux événements lancés par le formulaire
Transformer les données d'un formulaire grâce aux événements
Transformer des données avec un DataTransformer
DataTransformer : factoriser le code dans une classe !
Créer ses propres types de champs !
📖 Récapitulatif
Versionning avec Git
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
📖 Notions de base sur le composant Validator
Aperçu
Validation de données simples (scalaires)
Validation de données complexes (tableaux)
Validation d'objets grâce à YAML
Validation d'objets en PHP
Utiliser l'espace de noms Constraints (Assert)
Validation d'objets grâce aux annotations
Validation d'un formulaire
Les groupes de validation
Finitions et versionning avec Git
Exercice : validez les catégories !
Corrigé : validez les catégories !
📖 Récapitulatif
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
Twig : appeler un controller directement depuis un template
Twig : Injecter une variable globale dans nos templates
Mettre en place les liens utilisateurs dans la navbar

La sécurité : authentification (1 heure et 40 minutes)

📖 Introduction à la sécurité dans Symfony
📖 Firewalls : des régions politiques dans nos applications
Aperçu
Installation du composant Security
L'entité User pour représenter nos utilisateurs
Mise à jour des fixtures
Hasher les mots de passes pour plus de sécurité
📖 Introduction aux Authenticator de Symfony
Aperçu
La commande make:auth
Page de login et problèmes de routage
Jouer avec les priorités des routes
Formulaire de connexion (login)
Authenticator : la méthode supports()
Authenticator : compléter la procédure d'authentification
Les échecs possibles pendant l'authentification
Gérer les échecs / succès de l'authentification
Aperçu
Obtenir la raison de l'échec de l'authentification (AuthenticationUtils)
Modifier les messages d'erreur
📖 Premier récapitulatif
L'Authenticator "form_login" livré par Symfony
Gérer la déconnexion avec l'option "logout"
Mise en forme de la barre de navigation
📖 Deuxième récapitulatif
Interlude : les commandes essentielles (config:dump et debug:config)

La sécurité : autorisations et rôles (50 minutes)

📖 Introduction aux autorisations dans Symfony 5
La méthode "start()" de l'authenticator et les ACL
Découverte du service Security
Les raccourcis de l'AbstractController pour la sécurité
Contrôler les accès grâce à l'annotation @IsGranted
Aperçu
Contrôler l'accès à un objet en particulier
Encapsuler la logique d'accès dans un Voter
📖 Vraiment comprendre les Voters
Remise en place avant de passer à la suite
📖 Récapitulatif sur la sécurité dans Symfony 5
Versionning avec Git

La session dans Symfony 5 (1 heure et 30 minutes)

Mise en place du panier et découverte de la session
Sécuriser la procédure d'ajout d'un produit au panier
Se faire "livrer" la session grâce à la SessionInterface
Aperçu
Découverte des "bags" et du FlashBag
Afficher les message Flash dans Twig
Les raccourcis de l'AbstractController
Refactoring Twig et inclusion de templates
Afficher l'état du panier dans une page
📖 Premier récapitulatif
Aperçu
Refactoring : Créer un CartService qui embarque toute la gestion du panier
Refactoring : créer une classe qui représente un élément du panier
Rendre le CartService disponible dans nos templates Twig
Finalisations : incrémenter, décrémenter, supprimer les éléments du panier
Refactoring du CartService
Versionning avec Git
📖 Conclusion

Commandes : Doctrine et ManyToMany (1 heure et 45 minutes)

📖 Introduction
Créer l'entité Purchase (commande)
Afficher la liste des commandes d'un utilisateur
Ajouter une date de commande et gérer les problèmes de migration
Refactoring de la liste de commandes
Relation ManyToMany entre Purchase et Product
Créer une ManyToMany avec des informations supplémentaires
📖 Premier récapitulatif
Formulaire de commande
Le Controller qui va gérer le formulaire (1/2)
Le Controller qui va gérer le formulaire (2/2)
Refactoring du Controller
Finaliser le processus de commande
Versionning avec Git
📖 Conclusion
Refactoring : créer une classe pour persister la Purchase
Aperçu

Architecture et paiement Stripe ! (55 minutes)

📖 Introduction
Mise en place de la page de paiement
Créer une intention de paiement avec Stripe
Formulaire de carte bleue avec Stripe Elements
Finaliser le paiement après confirmation de Stripe
Refactoring : créer un StripeService
Définition du StripeService dans le fichier services.yaml
Aperçu
Refactoring du Javascript
Stocker les clés Stripes dans des variables d'environnement (.env)
Etudiez les Webhooks de Stripe !
Versionning avec Git
📖 Conclusion

Symfony et les événements (1 heure et 15 minutes)

Introduction aux événements dans Symfony
Prérequis : passages par valeur / référence
Le design pattern Mediator
Voir les événements et les réactions dans le profiler
Plongée dans le coeur de Symfony : le Kernel et les événements
Création de notre premier Listener
Découverte et création de notre premier Subscriber
Premier récapitulatif
Créons et propageons notre propre événement : le PurchaseEvent
Création d'un Subscriber qui enverra des emails
Rappels sur les principes SOLID
Versionning avec Git
Conclusion
Exercice : créer un événement ProductViewEvent et y réagir
Corrigé : créer un événement ProductViewEvent et y réagir

Doctrine et les événements (30 minutes)

Introduction au cycle de vie des entités
Automatismes dans les entités avec les Lifecycle Callbacks
Automatismes grâce aux Doctrine Listeners
Automatismes grâce au Entity Listeners
Conclusion et aide à la décision
Exercice : créer un automatisme avec Doctrine
Correction : créer un automatisme avec Doctrine
Versionning avec Git

Les emails avec le composant Mailer (35 minutes)

Symfony Mailer : introduction
Aperçu
Tester l'envoi des emails avec Mailtrap.io
Installation du composant Mailer
Envoyer notre premier email !
Créer des emails en HTML via Twig et le TemplatedEmail
Envoyer un email de confirmation lors d'une commande
Conclusion
Versionning avec Git

Etendre Twig avec de nouveaux filtres (15 minutes)

Enrichir Twig : Introduction
Créons le filtre "amount" pour afficher des prix
Rendre le filtre amount plus intelligent grâce aux paramètres
Enrichir Twig : conclusion
Versionning avec Git

Déployer Symfony 5 chez Heroku (47 minutes)

Déploiement : introduction
Héberger le code sur GitHub
Créer une application chez Heroku
Configurer Apache grâce au .htaccess et à la recette apache-pack
Créer une instance de MySQL attachée à l'app Heroku
Mettre en place les variables d'environnement chez Heroku
Configurer Monolog pour voir les logs de l'application en prod
Configurer les scripts pour les migrations et les fixtures
Conclusion

Conclusion de la formation (9 minutes)

Ouvertures et futurs apprentissages
Conclusion : bravo et merci 💕

Bonus : comprendre le ParamConverter de Symfony (en cours de tournage)

Tournage en cours

Bonus : faire de l'upload de fichier dans un formulaire (en cours de tournage)

Tournage en cours

A propos de Lior Chamla

Développeur web et formateur depuis plus de 13 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 😉

Obtenir les mises à jour

Obtenez régulièrement des offres, des conseils et des mises à jour en vous inscrivant à ma newsletter 🚀

You're signing up to receive emails from Lior Chamla : Développez vous bien !