Exercice #03 : Créez le formulaire de modification d'une catégorie

Aperçu indisponible

Vous devez vous connecter ou vous inscrire pour voir cette leçon.

Se connecterS'inscrire

Symfony 5 par la pratique

Acheter maintenantEn savoir plus

A propos de cette formation (15 minutes)

  • Présentation de la formation26
  • Ce que l'on va faire ensemble 😊3
  • Mise en place de VSCode9
  • Les outils nécessaires (PHP 7.2, Composer, Git ...)17
  • Rendre PHP disponible dans la CMD de Windows6
  • La CLI (ligne de commande) Symfony23
  • Tirer profit au mieux de cette formation2
  • Jouer les vidéos automatiquement (autoplay)8

Rafraichissement : le PHP de nos jours (30 minutes)

  • Le serveur interne de PHP6
  • L'autoloading (chargement automatique des classes)7
  • Composer et l'autoloading28
  • 📖 Composer et les bibliothèques tierces2
  • Installer des bibliothèques tierces avec Composer4
  • 📖 PHP moderne : Récapitulatif6
  • Rafraichissement : le PHP de nos jours (30 minutes): Quiz
  • 📖 Les commandes du développement moderne avec PHP3

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 avec Symfony 51
  • 📖 Une spécificité de Symfony : La modularité
  • Créons notre application Symfony 5.1 !43
  • Lancer le serveur avec la commande `symfony serve`26
  • 📖 Les commandes à connaître quand on débute avec la CLI de Symfony3

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

  • Premières pages : les Routes et les Controllers27
  • HttpFoundation : Requête et Réponse HTTP !19
  • Routes paramétrables : valeurs par défaut et contraintes9
  • Contraintes de Routes5
  • Configuration des Routes et fichiers YAML6
  • Configurer les routes sous forme d'Annotations (@Route)13
  • Symfony Flex : booster Composer et le rendre Surpuissant !65
  • Routes, Controllers, HttpFoundation : Récapitulatif2
  • Exercice : créez une page Hello World11
  • Correction : créez une page Hello World57
  • Les bases de Symfony : HttpFoundation et Routing (45 minutes): Quiz
  • 📖 Fiche de révision : Routing, Controller et HttpFoundation12

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

  • Introduction au container de services de Symfony38
  • Créez vos propres services !26
  • 📖 Comprendre le Container de Services de Symfony4
  • Voir le Container de Services à l'oeuvre !28
  • Les limites du Container : configuration des services25
  • Utilisez des bibliothèques tierces avec le Container13
  • 📖 La différence entre une bibliothèque et un Bundle Symfony13
  • 📖 Container de Services : Récapitulatif15
  • 📖 Interlude : l'ArgumentResolver dans Symfony2
  • Exercice #01 : Créez un service "Detector"19
  • Correction #01 : Créez un service "Detector"22
  • Exercice #02 : Configuration d'un seuil de TVA2
  • Correction #02 : Configuration d'un seuil de TVA13
  • Les bases de Symfony : Le container de services (50 minutes): Quiz

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

  • 📖 Introduction à Twig !2
  • Notre premier template Twig25
  • Twig : Les tags et les filtres3
  • Exercice #01 : Boucle for et if
  • Correction #01 : Boucle for et if6
  • Twig : Exploiter des tableaux associatifs ou des objets3
  • Twig : Héritage de templates et système de blocks9
  • Twig : Inclusions de templates7
  • 👌 Bonnes pratiques : créons une fonction render()9
  • Découverte de la classe AbstractController13
  • Twig : créons ensemble la page d'accueil du site14
  • Twig : créons une barre de navigation23
  • Twig : Récapitulatif7
  • A la découverte de Twig ! (65 minutes): Quiz

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

  • 📖 Introduction à Doctrine4
  • Doctrine : Installation du Bundle (donc des services 😉)28
  • 📖 Introduction au système de Migrations9
  • Création de la base de données72
  • Créer une entité Product et la migration qui va avec109
  • Découverte d'un Repository Doctrine15
  • Manipuler des enregistrements avec le Manager de Doctrine10
  • Exercice #01 : Créez une entité Category2
  • Correction #01 : Créez une entité Category9
  • Travailler et naviguer dans les migrations3
  • 📖 Doctrine : Premier récapitulatif
  • Créer des jeux de fausses données avec les Fixtures11
  • Attention : mise à jour concernant Faker1
  • Utiliser Faker pour plus de réalisme dans nos données20
  • Enrichir Faker pour plus de réalisme encore38
  • Créer de véritables Slugs avec le composant String18
  • 📖 Doctrine : Deuxième récapitulatif1
  • Créer une association entre Product et Category25
  • Ajouter un champ dans l'entité Product29
  • Utiliser nos entités dans un template Twig13
  • 📖 Doctrine : Dernier récapitulatif3
  • 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 !20

Twig : aller plus loin (35 minutes)

  • Créer la page d'une Category avec ses Products23
  • Créer la page d'un Product33
  • Ajouter un fil d'Ariane (Breadcrumb) sur nos pages10
  • Routes "statiques" : le problème des URLs écrites en dur
  • 👌 Génération des URLs avec l'UrlGenerator et la fonction path()12
  • 📖 Récapitulatif6
  • 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
  • Créer la page qui accueillera le formulaire de création d'un produit4
  • Configurer un formulaire avec le FormBuilder10
  • Configurer les champs du formulaire7
  • Remplir un ChoiceType avec les données de la base4
  • Utiliser les champs EntityType pour afficher les données de la base32
  • Twig : Les fonctions de rendu pour les formulaires2
  • Twig : Découverte des thèmes de formulaires2
  • Twig : Les thèmes de formulaires livrés avec Symfony17
  • 📖 Formulaires : Premier récapitulatif1
  • Soumission du formulaire et récupération des données14
  • Récupérer les données sous la forme d'un objet précis (data_class)10
  • Faire persister une entité issue d'un formulaire
  • 👌 Créer une classe de formulaire10
  • Form : les raccourcis offerts par l'AbstractController2
  • Créer un formulaire de modification22
  • Créer une Redirection après la soumission d'un formulaire11
  • 📖 Formulaires : Deuxième récapitulatif
  • Exercice #01 : Créez un CategoryController avec deux Routes
  • Correction #01 : Créez un CategoryController avec deux Routes5
  • 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égorie2
  • Exercice #03 : Créez le formulaire de modification d'une catégorie9
  • Correction #03 : Créez le formulaire de modification d'une catégorie16
  • 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
  • Réagir aux événements lancés par le formulaire12
  • Transformer les données d'un formulaire grâce aux événements23
  • Transformer des données avec un DataTransformer10
  • DataTransformer : factoriser le code dans une classe !6
  • Créer ses propres types de champs !6
  • 📖 Récapitulatif2
  • 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
  • Validation de données simples (scalaires)13
  • Validation de données complexes (tableaux)9
  • Validation d'objets grâce à YAML9
  • Validation d'objets en PHP2
  • Utiliser l'espace de noms Constraints (Assert)1
  • Validation d'objets grâce aux annotations22
  • Validation d'un formulaire26
  • Les groupes de validation2
  • Finitions et versionning avec Git30
  • Exercice : validez les catégories !
  • Corrigé : validez les catégories !4
  • 📖 Récapitulatif15
  • 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 : Introduction4
  • Twig : appeler un controller directement depuis un template
  • Twig : Injecter une variable globale dans nos templates17
  • 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 applications1
  • Installation du composant Security16
  • L'entité User pour représenter nos utilisateurs7
  • Mise à jour des fixtures2
  • Hasher les mots de passes pour plus de sécurité22
  • 📖 Introduction aux Authenticator de Symfony1
  • La commande make:auth9
  • Page de login et problèmes de routage8
  • Jouer avec les priorités des routes5
  • Formulaire de connexion (login)8
  • Authenticator : la méthode supports()8
  • Authenticator : compléter la procédure d'authentification24
  • Les échecs possibles pendant l'authentification5
  • Gérer les échecs / succès de l'authentification1
  • Obtenir la raison de l'échec de l'authentification (AuthenticationUtils)11
  • Modifier les messages d'erreur27
  • 📖 Premier récapitulatif2
  • L'Authenticator "form_login" livré par Symfony25
  • Gérer la déconnexion avec l'option "logout"7
  • Mise en forme de la barre de navigation4
  • 📖 Deuxième récapitulatif1
  • Interlude : les commandes essentielles (config:dump et debug:config)4

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

  • 📖 Introduction aux autorisations dans Symfony 5
  • La méthode "start()" de l'authenticator et les ACL6
  • Découverte du service Security8
  • Les raccourcis de l'AbstractController pour la sécurité3
  • Contrôler les accès grâce à l'annotation @IsGranted8
  • Contrôler l'accès à un objet en particulier1
  • Encapsuler la logique d'accès dans un Voter2
  • 📖 Vraiment comprendre les Voters2
  • Remise en place avant de passer à la suite
  • 📖 Récapitulatif sur la sécurité dans Symfony 53
  • Versionning avec Git

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

  • Mise en place du panier et découverte de la session7
  • Sécuriser la procédure d'ajout d'un produit au panier6
  • Se faire "livrer" la session grâce à la SessionInterface
  • Découverte des "bags" et du FlashBag8
  • Afficher les message Flash dans Twig8
  • Les raccourcis de l'AbstractController5
  • Refactoring Twig et inclusion de templates4
  • Afficher l'état du panier dans une page18
  • 📖 Premier récapitulatif
  • Refactoring : Créer un CartService qui embarque toute la gestion du panier26
  • Refactoring : créer une classe qui représente un élément du panier32
  • Rendre le CartService disponible dans nos templates Twig6
  • Finalisations : incrémenter, décrémenter, supprimer les éléments du panier4
  • Refactoring du CartService4
  • Versionning avec Git
  • 📖 Conclusion6

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

  • 📖 Introduction
  • Créer l'entité Purchase (commande)28
  • Afficher la liste des commandes d'un utilisateur20
  • Ajouter une date de commande et gérer les problèmes de migration10
  • Refactoring de la liste de commandes8
  • Relation ManyToMany entre Purchase et Product10
  • Créer une ManyToMany avec des informations supplémentaires17
  • 📖 Premier récapitulatif3
  • Formulaire de commande1
  • Le Controller qui va gérer le formulaire (1/2)17
  • Le Controller qui va gérer le formulaire (2/2)20
  • Refactoring du Controller9
  • Finaliser le processus de commande4
  • Versionning avec Git
  • 📖 Conclusion1
  • Refactoring : créer une classe pour persister la Purchase9

Architecture et paiement Stripe ! (55 minutes)

  • 📖 Introduction6
  • Mise en place de la page de paiement1
  • Créer une intention de paiement avec Stripe17
  • Formulaire de carte bleue avec Stripe Elements72
  • Finaliser le paiement après confirmation de Stripe8
  • Refactoring : créer un StripeService3
  • Définition du StripeService dans le fichier services.yaml2
  • Refactoring du Javascript3
  • Stocker les clés Stripes dans des variables d'environnement (.env)
  • Etudiez les Webhooks de Stripe !14
  • Versionning avec Git5
  • 📖 Conclusion4

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

  • Introduction aux événements dans Symfony
  • Prérequis : passages par valeur / référence3
  • 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énements11
  • Création de notre premier Listener3
  • Découverte et création de notre premier Subscriber8
  • Premier récapitulatif1
  • Créons et propageons notre propre événement : le PurchaseEvent
  • Création d'un Subscriber qui enverra des emails7
  • Rappels sur les principes SOLID1
  • Versionning avec Git1
  • Conclusion
  • Exercice : créer un événement ProductViewEvent et y réagir9
  • Corrigé : créer un événement ProductViewEvent et y réagir4

Doctrine et les événements (30 minutes)

  • Introduction au cycle de vie des entités
  • Automatismes dans les entités avec les Lifecycle Callbacks17
  • Automatismes grâce aux Doctrine Listeners13
  • Automatismes grâce au Entity Listeners4
  • Conclusion et aide à la décision
  • Exercice : créer un automatisme avec Doctrine
  • Correction : créer un automatisme avec Doctrine4
  • Versionning avec Git2

Les emails avec le composant Mailer (35 minutes)

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

Etendre Twig avec de nouveaux filtres (15 minutes)

  • Enrichir Twig : Introduction
  • Créons le filtre "amount" pour afficher des prix4
  • Rendre le filtre amount plus intelligent grâce aux paramètres1
  • Enrichir Twig : conclusion
  • Versionning avec Git2

Déployer Symfony 5 chez Heroku (47 minutes)

  • Déploiement : introduction1
  • Héberger le code sur GitHub5
  • Créer une application chez Heroku30
  • Configurer Apache grâce au .htaccess et à la recette apache-pack7
  • Créer une instance de MySQL attachée à l'app Heroku15
  • Mettre en place les variables d'environnement chez Heroku
  • Configurer Monolog pour voir les logs de l'application en prod1
  • Configurer les scripts pour les migrations et les fixtures52
  • Conclusion6

Conclusion de la formation (9 minutes)

  • Ouvertures et futurs apprentissages4
  • Conclusion : bravo et merci 💕56

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

  • Tournage en cours5

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

  • Tournage en cours11