Symfony 5 par la pratique
Acheter maintenant
En savoir plus
A propos de cette formation (15 minutes)
Présentation de la formation
Ce que l'on va faire ensemble 😊
Mise en place de VSCode
Les outils nécessaires (PHP 7.2, Comp...
Rendre PHP disponible dans la CMD de ...
La CLI (ligne de commande) Symfony
Tirer profit au mieux de cette formation
Jouer les vidéos automatiquement (aut...
Rafraichissement : le PHP de nos jours (30 minutes)
Le serveur interne de PHP
L'autoloading (chargement automatique...
Composer et l'autoloading
📖 Composer et les bibliothèques tierces
Installer des bibliothèques tierces a...
📖 PHP moderne : Récapitulatif
Rafraichissement : le PHP de nos jour...
📖 Les commandes du développement mode...
Présentation du framework Symfony (20 minutes)
📖 Qu'est-ce qu'un Framework au fait ?
📖 Présentation du projet Symfony
📖 L'architecture MVC dans le web, et ...
📖 Une spécificité de Symfony : La mod...
Créons notre application Symfony 5.1 !
Lancer le serveur avec la commande `s...
📖 Les commandes à connaître quand on ...
Les bases de Symfony : HttpFoundation et Routing (45 minutes)
Premières pages : les Routes et les C...
HttpFoundation : Requête et Réponse H...
Routes paramétrables : valeurs par dé...
Contraintes de Routes
Configuration des Routes et fichiers ...
Configurer les routes sous forme d'An...
Symfony Flex : booster Composer et le...
Routes, Controllers, HttpFoundation :...
Exercice : créez une page Hello World
Correction : créez une page Hello World
Les bases de Symfony : HttpFoundation...
📖 Fiche de révision : Routing, Contro...
Les bases de Symfony : Le container de services (50 minutes)
Introduction au container de services...
Créez vos propres services !
📖 Comprendre le Container de Services...
Voir le Container de Services à l'oeu...
Les limites du Container : configurat...
Utilisez des bibliothèques tierces av...
📖 La différence entre une bibliothèqu...
📖 Container de Services : Récapitulatif
📖 Interlude : l'ArgumentResolver dans...
Exercice #01 : Créez un service "Dete...
Correction #01 : Créez un service "De...
Exercice #02 : Configuration d'un seu...
Correction #02 : Configuration d'un s...
Les bases de Symfony : Le container d...
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 associa...
Twig : Héritage de templates et systè...
Twig : Inclusions de templates
👌 Bonnes pratiques : créons une fonct...
Découverte de la classe AbstractContr...
Twig : créons ensemble la page d'accu...
Twig : créons une barre de navigation
Twig : Récapitulatif
A la découverte de Twig ! (65 minutes...
Doctrine et les bases de données (1 heure 35 minutes)
📖 Introduction à Doctrine
Doctrine : Installation du Bundle (do...
📖 Introduction au système de Migrations
Création de la base de données
Créer une entité Product et la migrat...
Découverte d'un Repository Doctrine
Manipuler des enregistrements avec le...
Exercice #01 : Créez une entité Category
Correction #01 : Créez une entité Cat...
Travailler et naviguer dans les migra...
📖 Doctrine : Premier récapitulatif
Créer des jeux de fausses données ave...
Attention : mise à jour concernant Faker
Utiliser Faker pour plus de réalisme ...
Enrichir Faker pour plus de réalisme ...
Créer de véritables Slugs avec le com...
📖 Doctrine : Deuxième récapitulatif
Créer une association entre Product e...
Ajouter un champ dans l'entité Product
Utiliser nos entités dans un template...
📖 Doctrine : Dernier récapitulatif
Doctrine et les bases de données (1 h...
Symfony 5 et le Debug Pack (9 minutes)
Débugger dans Symfony avec le Debug P...
Twig : aller plus loin (35 minutes)
Créer la page d'une Category avec ses...
Créer la page d'un Product
Ajouter un fil d'Ariane (Breadcrumb) ...
Routes "statiques" : le problème des ...
👌 Génération des URLs avec l'UrlGener...
📖 Récapitulatif
Twig : aller plus loin (35 minutes): ...
Les formulaires dans Symfony 5 (1 heure 50 minutes)
📖 Introduction aux formulaires avec S...
Installer le composant symfony/form
Créer la page qui accueillera le form...
Configurer un formulaire avec le Form...
Configurer les champs du formulaire
Remplir un ChoiceType avec les donnée...
Utiliser les champs EntityType pour a...
Twig : Les fonctions de rendu pour le...
Twig : Découverte des thèmes de formu...
Twig : Les thèmes de formulaires livr...
📖 Formulaires : Premier récapitulatif
Soumission du formulaire et récupérat...
Récupérer les données sous la forme d...
Faire persister une entité issue d'un...
👌 Créer une classe de formulaire
Form : les raccourcis offerts par l'A...
Créer un formulaire de modification
Créer une Redirection après la soumis...
📖 Formulaires : Deuxième récapitulatif
Exercice #01 : Créez un CategoryContr...
Correction #01 : Créez un CategoryCon...
Exercice #02 : Créez le formulaire de...
Correction #02 : Créez le formulaire ...
Exercice #03 : Créez le formulaire de...
Correction #03 : Créez le formulaire ...
Les formulaires dans Symfony 5 (1 heu...
Aller plus loin avec le composant Form de Symfony (45 minutes)
📖 Le cycle de vie d'un Formulaire
Réagir aux événements lancés par le f...
Transformer les données d'un formulai...
Transformer des données avec un DataT...
DataTransformer : factoriser le code ...
Créer ses propres types de champs !
📖 Récapitulatif
Versionning avec Git
Aller plus loin avec le composant For...
Validation des données (1 heure et 5 minutes)
Introduction à la validation des donn...
📖 Notions de base sur le composant Va...
Validation de données simples (scalai...
Validation de données complexes (tabl...
Validation d'objets grâce à YAML
Validation d'objets en PHP
Utiliser l'espace de noms Constraints...
Validation d'objets grâce aux annotat...
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 ...
Renforcement Twig : Mise en place de la navbar (16 minutes)
Mise en place de la navbar : Introduc...
Twig : appeler un controller directem...
Twig : Injecter une variable globale ...
Mettre en place les liens utilisateur...
La sécurité : authentification (1 heure et 40 minutes)
📖 Introduction à la sécurité dans Sym...
📖 Firewalls : des régions politiques ...
Installation du composant Security
L'entité User pour représenter nos ut...
Mise à jour des fixtures
Hasher les mots de passes pour plus d...
📖 Introduction aux Authenticator de S...
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édur...
Les échecs possibles pendant l'authen...
Gérer les échecs / succès de l'authen...
Obtenir la raison de l'échec de l'aut...
Modifier les messages d'erreur
📖 Premier récapitulatif
L'Authenticator "form_login" livré pa...
Gérer la déconnexion avec l'option "l...
Mise en forme de la barre de navigation
📖 Deuxième récapitulatif
Interlude : les commandes essentielle...
La sécurité : autorisations et rôles (50 minutes)
📖 Introduction aux autorisations dans...
La méthode "start()" de l'authenticat...
Découverte du service Security
Les raccourcis de l'AbstractControlle...
Contrôler les accès grâce à l'annotat...
Contrôler l'accès à un objet en parti...
Encapsuler la logique d'accès dans un...
📖 Vraiment comprendre les Voters
Remise en place avant de passer à la ...
📖 Récapitulatif sur la sécurité dans ...
Versionning avec Git
La session dans Symfony 5 (1 heure et 30 minutes)
Mise en place du panier et découverte...
Sécuriser la procédure d'ajout d'un p...
Se faire "livrer" la session grâce à ...
Découverte des "bags" et du FlashBag
Afficher les message Flash dans Twig
Les raccourcis de l'AbstractController
Refactoring Twig et inclusion de temp...
Afficher l'état du panier dans une page
📖 Premier récapitulatif
Refactoring : Créer un CartService qu...
Refactoring : créer une classe qui re...
Rendre le CartService disponible dans...
Finalisations : incrémenter, décrémen...
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 ...
Ajouter une date de commande et gérer...
Refactoring de la liste de commandes
Relation ManyToMany entre Purchase et...
Créer une ManyToMany avec des informa...
📖 Premier récapitulatif
Formulaire de commande
Le Controller qui va gérer le formula...
Le Controller qui va gérer le formula...
Refactoring du Controller
Finaliser le processus de commande
Versionning avec Git
📖 Conclusion
Refactoring : créer une classe pour p...
Architecture et paiement Stripe ! (55 minutes)
📖 Introduction
Mise en place de la page de paiement
Créer une intention de paiement avec ...
Formulaire de carte bleue avec Stripe...
Finaliser le paiement après confirmat...
Refactoring : créer un StripeService
Définition du StripeService dans le f...
Refactoring du Javascript
Stocker les clés Stripes dans des var...
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...
Le design pattern Mediator
Voir les événements et les réactions ...
Plongée dans le coeur de Symfony : le...
Création de notre premier Listener
Découverte et création de notre premi...
Premier récapitulatif
Créons et propageons notre propre évé...
Création d'un Subscriber qui enverra ...
Rappels sur les principes SOLID
Versionning avec Git
Conclusion
Exercice : créer un événement Product...
Corrigé : créer un événement ProductV...
Doctrine et les événements (30 minutes)
Introduction au cycle de vie des entités
Automatismes dans les entités avec le...
Automatismes grâce aux Doctrine Liste...
Automatismes grâce au Entity Listeners
Conclusion et aide à la décision
Exercice : créer un automatisme avec ...
Correction : créer un automatisme ave...
Versionning avec Git
Les emails avec le composant Mailer (35 minutes)
Symfony Mailer : introduction
Tester l'envoi des emails avec Mailtr...
Installation du composant Mailer
Envoyer notre premier email !
Créer des emails en HTML via Twig et ...
Envoyer un email de confirmation lors...
Conclusion
Versionning avec Git
Etendre Twig avec de nouveaux filtres (15 minutes)
Enrichir Twig : Introduction
Créons le filtre "amount" pour affich...
Rendre le filtre amount plus intellig...
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 ...
Créer une instance de MySQL attachée ...
Mettre en place les variables d'envir...
Configurer Monolog pour voir les logs...
Configurer les scripts pour les migra...
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
Programmes
Cours
Section
La sécurité : authentification (1 heure et 40 minutes)
La sécurité : authentification (1 heure et 40 minutes)
Symfony 5 par la pratique
Acheter maintenant
En savoir plus
A propos de cette formation (15 minutes)
Présentation de la formation
Ce que l'on va faire ensemble 😊
Mise en place de VSCode
Les outils nécessaires (PHP 7.2, Comp...
Rendre PHP disponible dans la CMD de ...
La CLI (ligne de commande) Symfony
Tirer profit au mieux de cette formation
Jouer les vidéos automatiquement (aut...
Rafraichissement : le PHP de nos jours (30 minutes)
Le serveur interne de PHP
L'autoloading (chargement automatique...
Composer et l'autoloading
📖 Composer et les bibliothèques tierces
Installer des bibliothèques tierces a...
📖 PHP moderne : Récapitulatif
Rafraichissement : le PHP de nos jour...
📖 Les commandes du développement mode...
Présentation du framework Symfony (20 minutes)
📖 Qu'est-ce qu'un Framework au fait ?
📖 Présentation du projet Symfony
📖 L'architecture MVC dans le web, et ...
📖 Une spécificité de Symfony : La mod...
Créons notre application Symfony 5.1 !
Lancer le serveur avec la commande `s...
📖 Les commandes à connaître quand on ...
Les bases de Symfony : HttpFoundation et Routing (45 minutes)
Premières pages : les Routes et les C...
HttpFoundation : Requête et Réponse H...
Routes paramétrables : valeurs par dé...
Contraintes de Routes
Configuration des Routes et fichiers ...
Configurer les routes sous forme d'An...
Symfony Flex : booster Composer et le...
Routes, Controllers, HttpFoundation :...
Exercice : créez une page Hello World
Correction : créez une page Hello World
Les bases de Symfony : HttpFoundation...
📖 Fiche de révision : Routing, Contro...
Les bases de Symfony : Le container de services (50 minutes)
Introduction au container de services...
Créez vos propres services !
📖 Comprendre le Container de Services...
Voir le Container de Services à l'oeu...
Les limites du Container : configurat...
Utilisez des bibliothèques tierces av...
📖 La différence entre une bibliothèqu...
📖 Container de Services : Récapitulatif
📖 Interlude : l'ArgumentResolver dans...
Exercice #01 : Créez un service "Dete...
Correction #01 : Créez un service "De...
Exercice #02 : Configuration d'un seu...
Correction #02 : Configuration d'un s...
Les bases de Symfony : Le container d...
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 associa...
Twig : Héritage de templates et systè...
Twig : Inclusions de templates
👌 Bonnes pratiques : créons une fonct...
Découverte de la classe AbstractContr...
Twig : créons ensemble la page d'accu...
Twig : créons une barre de navigation
Twig : Récapitulatif
A la découverte de Twig ! (65 minutes...
Doctrine et les bases de données (1 heure 35 minutes)
📖 Introduction à Doctrine
Doctrine : Installation du Bundle (do...
📖 Introduction au système de Migrations
Création de la base de données
Créer une entité Product et la migrat...
Découverte d'un Repository Doctrine
Manipuler des enregistrements avec le...
Exercice #01 : Créez une entité Category
Correction #01 : Créez une entité Cat...
Travailler et naviguer dans les migra...
📖 Doctrine : Premier récapitulatif
Créer des jeux de fausses données ave...
Attention : mise à jour concernant Faker
Utiliser Faker pour plus de réalisme ...
Enrichir Faker pour plus de réalisme ...
Créer de véritables Slugs avec le com...
📖 Doctrine : Deuxième récapitulatif
Créer une association entre Product e...
Ajouter un champ dans l'entité Product
Utiliser nos entités dans un template...
📖 Doctrine : Dernier récapitulatif
Doctrine et les bases de données (1 h...
Symfony 5 et le Debug Pack (9 minutes)
Débugger dans Symfony avec le Debug P...
Twig : aller plus loin (35 minutes)
Créer la page d'une Category avec ses...
Créer la page d'un Product
Ajouter un fil d'Ariane (Breadcrumb) ...
Routes "statiques" : le problème des ...
👌 Génération des URLs avec l'UrlGener...
📖 Récapitulatif
Twig : aller plus loin (35 minutes): ...
Les formulaires dans Symfony 5 (1 heure 50 minutes)
📖 Introduction aux formulaires avec S...
Installer le composant symfony/form
Créer la page qui accueillera le form...
Configurer un formulaire avec le Form...
Configurer les champs du formulaire
Remplir un ChoiceType avec les donnée...
Utiliser les champs EntityType pour a...
Twig : Les fonctions de rendu pour le...
Twig : Découverte des thèmes de formu...
Twig : Les thèmes de formulaires livr...
📖 Formulaires : Premier récapitulatif
Soumission du formulaire et récupérat...
Récupérer les données sous la forme d...
Faire persister une entité issue d'un...
👌 Créer une classe de formulaire
Form : les raccourcis offerts par l'A...
Créer un formulaire de modification
Créer une Redirection après la soumis...
📖 Formulaires : Deuxième récapitulatif
Exercice #01 : Créez un CategoryContr...
Correction #01 : Créez un CategoryCon...
Exercice #02 : Créez le formulaire de...
Correction #02 : Créez le formulaire ...
Exercice #03 : Créez le formulaire de...
Correction #03 : Créez le formulaire ...
Les formulaires dans Symfony 5 (1 heu...
Aller plus loin avec le composant Form de Symfony (45 minutes)
📖 Le cycle de vie d'un Formulaire
Réagir aux événements lancés par le f...
Transformer les données d'un formulai...
Transformer des données avec un DataT...
DataTransformer : factoriser le code ...
Créer ses propres types de champs !
📖 Récapitulatif
Versionning avec Git
Aller plus loin avec le composant For...
Validation des données (1 heure et 5 minutes)
Introduction à la validation des donn...
📖 Notions de base sur le composant Va...
Validation de données simples (scalai...
Validation de données complexes (tabl...
Validation d'objets grâce à YAML
Validation d'objets en PHP
Utiliser l'espace de noms Constraints...
Validation d'objets grâce aux annotat...
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 ...
Renforcement Twig : Mise en place de la navbar (16 minutes)
Mise en place de la navbar : Introduc...
Twig : appeler un controller directem...
Twig : Injecter une variable globale ...
Mettre en place les liens utilisateur...
La sécurité : authentification (1 heure et 40 minutes)
📖 Introduction à la sécurité dans Sym...
📖 Firewalls : des régions politiques ...
Installation du composant Security
L'entité User pour représenter nos ut...
Mise à jour des fixtures
Hasher les mots de passes pour plus d...
📖 Introduction aux Authenticator de S...
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édur...
Les échecs possibles pendant l'authen...
Gérer les échecs / succès de l'authen...
Obtenir la raison de l'échec de l'aut...
Modifier les messages d'erreur
📖 Premier récapitulatif
L'Authenticator "form_login" livré pa...
Gérer la déconnexion avec l'option "l...
Mise en forme de la barre de navigation
📖 Deuxième récapitulatif
Interlude : les commandes essentielle...
La sécurité : autorisations et rôles (50 minutes)
📖 Introduction aux autorisations dans...
La méthode "start()" de l'authenticat...
Découverte du service Security
Les raccourcis de l'AbstractControlle...
Contrôler les accès grâce à l'annotat...
Contrôler l'accès à un objet en parti...
Encapsuler la logique d'accès dans un...
📖 Vraiment comprendre les Voters
Remise en place avant de passer à la ...
📖 Récapitulatif sur la sécurité dans ...
Versionning avec Git
La session dans Symfony 5 (1 heure et 30 minutes)
Mise en place du panier et découverte...
Sécuriser la procédure d'ajout d'un p...
Se faire "livrer" la session grâce à ...
Découverte des "bags" et du FlashBag
Afficher les message Flash dans Twig
Les raccourcis de l'AbstractController
Refactoring Twig et inclusion de temp...
Afficher l'état du panier dans une page
📖 Premier récapitulatif
Refactoring : Créer un CartService qu...
Refactoring : créer une classe qui re...
Rendre le CartService disponible dans...
Finalisations : incrémenter, décrémen...
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 ...
Ajouter une date de commande et gérer...
Refactoring de la liste de commandes
Relation ManyToMany entre Purchase et...
Créer une ManyToMany avec des informa...
📖 Premier récapitulatif
Formulaire de commande
Le Controller qui va gérer le formula...
Le Controller qui va gérer le formula...
Refactoring du Controller
Finaliser le processus de commande
Versionning avec Git
📖 Conclusion
Refactoring : créer une classe pour p...
Architecture et paiement Stripe ! (55 minutes)
📖 Introduction
Mise en place de la page de paiement
Créer une intention de paiement avec ...
Formulaire de carte bleue avec Stripe...
Finaliser le paiement après confirmat...
Refactoring : créer un StripeService
Définition du StripeService dans le f...
Refactoring du Javascript
Stocker les clés Stripes dans des var...
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...
Le design pattern Mediator
Voir les événements et les réactions ...
Plongée dans le coeur de Symfony : le...
Création de notre premier Listener
Découverte et création de notre premi...
Premier récapitulatif
Créons et propageons notre propre évé...
Création d'un Subscriber qui enverra ...
Rappels sur les principes SOLID
Versionning avec Git
Conclusion
Exercice : créer un événement Product...
Corrigé : créer un événement ProductV...
Doctrine et les événements (30 minutes)
Introduction au cycle de vie des entités
Automatismes dans les entités avec le...
Automatismes grâce aux Doctrine Liste...
Automatismes grâce au Entity Listeners
Conclusion et aide à la décision
Exercice : créer un automatisme avec ...
Correction : créer un automatisme ave...
Versionning avec Git
Les emails avec le composant Mailer (35 minutes)
Symfony Mailer : introduction
Tester l'envoi des emails avec Mailtr...
Installation du composant Mailer
Envoyer notre premier email !
Créer des emails en HTML via Twig et ...
Envoyer un email de confirmation lors...
Conclusion
Versionning avec Git
Etendre Twig avec de nouveaux filtres (15 minutes)
Enrichir Twig : Introduction
Créons le filtre "amount" pour affich...
Rendre le filtre amount plus intellig...
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 ...
Créer une instance de MySQL attachée ...
Mettre en place les variables d'envir...
Configurer Monolog pour voir les logs...
Configurer les scripts pour les migra...
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
23 Leçons
📖 Introduction à la sécurité dans Sym...
📖 Firewalls : des régions politiques ...
Installation du composant Security
L'entité User pour représenter nos ut...
Mise à jour des fixtures
Hasher les mots de passes pour plus d...
📖 Introduction aux Authenticator de S...
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édur...
Les échecs possibles pendant l'authen...
Gérer les échecs / succès de l'authen...
Obtenir la raison de l'échec de l'aut...
Modifier les messages d'erreur
📖 Premier récapitulatif
L'Authenticator "form_login" livré pa...
Gérer la déconnexion avec l'option "l...
Mise en forme de la barre de navigation
📖 Deuxième récapitulatif
Interlude : les commandes essentielle...