Utiliser Faker pour plus de réalisme dans nos données
Aperçu indisponible
Vous devez vous connecter ou vous inscrire pour voir cette leçon.
Se connecter
S'inscrire
Symfony 5 par la pratique
Acheter maintenant
En savoir plus
A propos de cette formation (15 minutes)
Présentation de la formation
26
Ce que l'on va faire ensemble 😊
3
Mise en place de VSCode
9
Les outils nécessaires (PHP 7.2, Composer, Git ...)
17
Rendre PHP disponible dans la CMD de Windows
6
La CLI (ligne de commande) Symfony
23
Tirer profit au mieux de cette formation
2
Jouer les vidéos automatiquement (autoplay)
8
Rafraichissement : le PHP de nos jours (30 minutes)
Le serveur interne de PHP
6
L'autoloading (chargement automatique des classes)
7
Composer et l'autoloading
28
📖 Composer et les bibliothèques tierces
2
Installer des bibliothèques tierces avec Composer
4
📖 PHP moderne : Récapitulatif
6
Rafraichissement : le PHP de nos jours (30 minutes): Quiz
📖 Les commandes du développement moderne avec PHP
3
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 5
1
📖 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 Symfony
3
Les bases de Symfony : HttpFoundation et Routing (45 minutes)
Premières pages : les Routes et les Controllers
27
HttpFoundation : Requête et Réponse HTTP !
19
Routes paramétrables : valeurs par défaut et contraintes
9
Contraintes de Routes
5
Configuration des Routes et fichiers YAML
6
Configurer les routes sous forme d'Annotations (@Route)
13
Symfony Flex : booster Composer et le rendre Surpuissant !
65
Routes, Controllers, HttpFoundation : Récapitulatif
2
Exercice : créez une page Hello World
11
Correction : créez une page Hello World
57
Les bases de Symfony : HttpFoundation et Routing (45 minutes): Quiz
📖 Fiche de révision : Routing, Controller et HttpFoundation
12
Les bases de Symfony : Le container de services (50 minutes)
Introduction au container de services de Symfony
38
Créez vos propres services !
26
📖 Comprendre le Container de Services de Symfony
4
Voir le Container de Services à l'oeuvre !
28
Les limites du Container : configuration des services
25
Utilisez des bibliothèques tierces avec le Container
13
📖 La différence entre une bibliothèque et un Bundle Symfony
13
📖 Container de Services : Récapitulatif
15
📖 Interlude : l'ArgumentResolver dans Symfony
2
Exercice #01 : Créez un service "Detector"
19
Correction #01 : Créez un service "Detector"
22
Exercice #02 : Configuration d'un seuil de TVA
2
Correction #02 : Configuration d'un seuil de TVA
13
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 Twig
25
Twig : Les tags et les filtres
3
Exercice #01 : Boucle for et if
Correction #01 : Boucle for et if
6
Twig : Exploiter des tableaux associatifs ou des objets
3
Twig : Héritage de templates et système de blocks
9
Twig : Inclusions de templates
7
👌 Bonnes pratiques : créons une fonction render()
9
Découverte de la classe AbstractController
13
Twig : créons ensemble la page d'accueil du site
14
Twig : créons une barre de navigation
23
Twig : Récapitulatif
7
A la découverte de Twig ! (65 minutes): Quiz
Doctrine et les bases de données (1 heure 35 minutes)
📖 Introduction à Doctrine
4
Doctrine : Installation du Bundle (donc des services 😉)
28
📖 Introduction au système de Migrations
9
Création de la base de données
72
Créer une entité Product et la migration qui va avec
109
Découverte d'un Repository Doctrine
15
Manipuler des enregistrements avec le Manager de Doctrine
10
Exercice #01 : Créez une entité Category
2
Correction #01 : Créez une entité Category
9
Travailler et naviguer dans les migrations
3
📖 Doctrine : Premier récapitulatif
Créer des jeux de fausses données avec les Fixtures
11
Attention : mise à jour concernant Faker
1
Utiliser Faker pour plus de réalisme dans nos données
20
Enrichir Faker pour plus de réalisme encore
38
Créer de véritables Slugs avec le composant String
18
📖 Doctrine : Deuxième récapitulatif
1
Créer une association entre Product et Category
25
Ajouter un champ dans l'entité Product
29
Utiliser nos entités dans un template Twig
13
📖 Doctrine : Dernier récapitulatif
3
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 Products
23
Créer la page d'un Product
33
Ajouter un fil d'Ariane (Breadcrumb) sur nos pages
10
Routes "statiques" : le problème des URLs écrites en dur
👌 Génération des URLs avec l'UrlGenerator et la fonction path()
12
📖 Récapitulatif
6
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 produit
4
Configurer un formulaire avec le FormBuilder
10
Configurer les champs du formulaire
7
Remplir un ChoiceType avec les données de la base
4
Utiliser les champs EntityType pour afficher les données de la base
32
Twig : Les fonctions de rendu pour les formulaires
2
Twig : Découverte des thèmes de formulaires
2
Twig : Les thèmes de formulaires livrés avec Symfony
17
📖 Formulaires : Premier récapitulatif
1
Soumission du formulaire et récupération des données
14
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 formulaire
10
Form : les raccourcis offerts par l'AbstractController
2
Créer un formulaire de modification
22
Créer une Redirection après la soumission d'un formulaire
11
📖 Formulaires : Deuxième récapitulatif
Exercice #01 : Créez un CategoryController avec deux Routes
Correction #01 : Créez un CategoryController avec deux Routes
5
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
2
Exercice #03 : Créez le formulaire de modification d'une catégorie
9
Correction #03 : Créez le formulaire de modification d'une catégorie
16
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 formulaire
12
Transformer les données d'un formulaire grâce aux événements
23
Transformer des données avec un DataTransformer
10
DataTransformer : factoriser le code dans une classe !
6
Créer ses propres types de champs !
6
📖 Récapitulatif
2
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 à YAML
9
Validation d'objets en PHP
2
Utiliser l'espace de noms Constraints (Assert)
1
Validation d'objets grâce aux annotations
22
Validation d'un formulaire
26
Les groupes de validation
2
Finitions et versionning avec Git
30
Exercice : validez les catégories !
Corrigé : validez les catégories !
4
📖 Récapitulatif
15
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
4
Twig : appeler un controller directement depuis un template
Twig : Injecter une variable globale dans nos templates
17
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
1
Installation du composant Security
16
L'entité User pour représenter nos utilisateurs
7
Mise à jour des fixtures
2
Hasher les mots de passes pour plus de sécurité
22
📖 Introduction aux Authenticator de Symfony
1
La commande make:auth
9
Page de login et problèmes de routage
8
Jouer avec les priorités des routes
5
Formulaire de connexion (login)
8
Authenticator : la méthode supports()
8
Authenticator : compléter la procédure d'authentification
24
Les échecs possibles pendant l'authentification
5
Gérer les échecs / succès de l'authentification
1
Obtenir la raison de l'échec de l'authentification (AuthenticationUtils)
11
Modifier les messages d'erreur
27
📖 Premier récapitulatif
2
L'Authenticator "form_login" livré par Symfony
25
Gérer la déconnexion avec l'option "logout"
7
Mise en forme de la barre de navigation
4
📖 Deuxième récapitulatif
1
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 ACL
6
Découverte du service Security
8
Les raccourcis de l'AbstractController pour la sécurité
3
Contrôler les accès grâce à l'annotation @IsGranted
8
Contrôler l'accès à un objet en particulier
1
Encapsuler la logique d'accès dans un Voter
2
📖 Vraiment comprendre les Voters
2
Remise en place avant de passer à la suite
📖 Récapitulatif sur la sécurité dans Symfony 5
3
Versionning avec Git
La session dans Symfony 5 (1 heure et 30 minutes)
Mise en place du panier et découverte de la session
7
Sécuriser la procédure d'ajout d'un produit au panier
6
Se faire "livrer" la session grâce à la SessionInterface
Découverte des "bags" et du FlashBag
8
Afficher les message Flash dans Twig
8
Les raccourcis de l'AbstractController
5
Refactoring Twig et inclusion de templates
4
Afficher l'état du panier dans une page
18
📖 Premier récapitulatif
Refactoring : Créer un CartService qui embarque toute la gestion du panier
26
Refactoring : créer une classe qui représente un élément du panier
32
Rendre le CartService disponible dans nos templates Twig
6
Finalisations : incrémenter, décrémenter, supprimer les éléments du panier
4
Refactoring du CartService
4
Versionning avec Git
📖 Conclusion
6
Commandes : Doctrine et ManyToMany (1 heure et 45 minutes)
📖 Introduction
Créer l'entité Purchase (commande)
28
Afficher la liste des commandes d'un utilisateur
20
Ajouter une date de commande et gérer les problèmes de migration
10
Refactoring de la liste de commandes
8
Relation ManyToMany entre Purchase et Product
10
Créer une ManyToMany avec des informations supplémentaires
17
📖 Premier récapitulatif
3
Formulaire de commande
1
Le Controller qui va gérer le formulaire (1/2)
17
Le Controller qui va gérer le formulaire (2/2)
20
Refactoring du Controller
9
Finaliser le processus de commande
4
Versionning avec Git
📖 Conclusion
1
Refactoring : créer une classe pour persister la Purchase
9
Architecture et paiement Stripe ! (55 minutes)
📖 Introduction
6
Mise en place de la page de paiement
1
Créer une intention de paiement avec Stripe
17
Formulaire de carte bleue avec Stripe Elements
72
Finaliser le paiement après confirmation de Stripe
8
Refactoring : créer un StripeService
3
Définition du StripeService dans le fichier services.yaml
2
Refactoring du Javascript
3
Stocker les clés Stripes dans des variables d'environnement (.env)
Etudiez les Webhooks de Stripe !
14
Versionning avec Git
5
📖 Conclusion
4
Symfony et les événements (1 heure et 15 minutes)
Introduction aux événements dans Symfony
Prérequis : passages par valeur / référence
3
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
11
Création de notre premier Listener
3
Découverte et création de notre premier Subscriber
8
Premier récapitulatif
1
Créons et propageons notre propre événement : le PurchaseEvent
Création d'un Subscriber qui enverra des emails
7
Rappels sur les principes SOLID
1
Versionning avec Git
1
Conclusion
Exercice : créer un événement ProductViewEvent et y réagir
9
Corrigé : créer un événement ProductViewEvent et y réagir
4
Doctrine et les événements (30 minutes)
Introduction au cycle de vie des entités
Automatismes dans les entités avec les Lifecycle Callbacks
17
Automatismes grâce aux Doctrine Listeners
13
Automatismes grâce au Entity Listeners
4
Conclusion et aide à la décision
Exercice : créer un automatisme avec Doctrine
Correction : créer un automatisme avec Doctrine
4
Versionning avec Git
2
Les emails avec le composant Mailer (35 minutes)
Symfony Mailer : introduction
Tester l'envoi des emails avec Mailtrap.io
Installation du composant Mailer
2
Envoyer notre premier email !
7
Créer des emails en HTML via Twig et le TemplatedEmail
Envoyer un email de confirmation lors d'une commande
14
Conclusion
Versionning avec Git
Etendre Twig avec de nouveaux filtres (15 minutes)
Enrichir Twig : Introduction
Créons le filtre "amount" pour afficher des prix
4
Rendre le filtre amount plus intelligent grâce aux paramètres
1
Enrichir Twig : conclusion
Versionning avec Git
2
Déployer Symfony 5 chez Heroku (47 minutes)
Déploiement : introduction
1
Héberger le code sur GitHub
5
Créer une application chez Heroku
30
Configurer Apache grâce au .htaccess et à la recette apache-pack
7
Créer une instance de MySQL attachée à l'app Heroku
15
Mettre en place les variables d'environnement chez Heroku
Configurer Monolog pour voir les logs de l'application en prod
1
Configurer les scripts pour les migrations et les fixtures
52
Conclusion
6
Conclusion de la formation (9 minutes)
Ouvertures et futurs apprentissages
4
Conclusion : bravo et merci 💕
56
Bonus : comprendre le ParamConverter de Symfony (en cours de tournage)
Tournage en cours
5
Bonus : faire de l'upload de fichier dans un formulaire (en cours de tournage)
Tournage en cours
11