Symfony 4 : les fondamentaux par la pratique

✨ Best seller sur Udemy

Cette formation a été suivie par près de 800 étudiants sur Udemy et notée 5 étoiles (⭐⭐⭐⭐⭐) !

Créer un site d'annonce avec interface d'administration pour apprendre tous les fondamentaux du Framework PHP Symfony 4

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 4 vous permettra de créer étape après étape un véritable site d'annonces sur lequel les utilisateurs pourront :
  • S'inscrire, s'authentifier et gérer leur compte
  • Créer des annonces afin de mettre en location leur bien
  • Réserver une location 
  • Commenter et noter l'annonce après que la location ait eu lieu
De  plus, le site fournira aux administrateurs une véritable interface de gestion sécurisée. 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 pour ces 20 heures de vidéo et devenez un véritable développeur Symfony 4, vous aurez alors des bases solides pour continuer par vous même votre apprentissage de toutes les subtilités du Framework !

Ce que vous allez apprendre

  • Développer une application Symfony complexe
  • Maîtriser le concept de Controllers et de Routes paramétrées ou pas
  • Maîtriser le langage de templating Twig et ses subtilités
  • Utiliser le composant Form pour créer des formulaires riches et des sous-formulaires
  • Utiliser des DataTransformers pour formater des données vers et depuis un formulaire

  • Mettre en place des validations de formulaire
  • Comprendre Doctrine et la liaison avec la base de données
  • Construire une base de données pas à pas grâce aux entités et au système de migrations
  • Créer des requêtes complexes grâce au DQL (Doctrine Query Language)

  • Créer des jeux de fausses données grâce aux Fixtures
  • Utiliser le composant Security pour sécuriser les pages, gérer les rôles et l'authentification des utilisateurs
  • Personnaliser les pages d'erreurs les plus communes
  • Comprendre la notion et l'utilité des Services
  • Construire un système de pagination de A à Z
  • Déployer une application Symfony sur différents types de serveurs (mutualisé ou container)

Vous allez recevoir :

Video Icon 213 vidéos File Icon 3 des dossiers Text Icon 3 fichiers texte

Contenu

Introduction
Qu'est-ce que Symfony 4 et pourquoi l'utiliser ?
4 min
Ce qu'on va faire ensemble, ce que ça va vous apporter
5 min
Les outils nécessaires pour suivre la formation
2 min
Mettre en place l'environnement de travail
Mettre en place VSCode pour travailler !
Tirez profit au maximum de cette formation !
3 min
Premiers pas : mise en place de notre application Symfony 4
Créons notre projet Symfony 4 avec Composer !
5 min
Découverte de la structure d'une application Symfony 4
7 min
Introduction : le concept de Controller au sein d'une application Symfony 4
4 min
Créons notre premier Controller : le HomeController
7 min
Séparer les traitements et l'affichage grâce à Twig
5 min
Les avantages du langage de templating Twig
2 min
Comprendre Twig : L'interpolation (afficher une variable)
3 min
Comprendre Twig : les structures de contrôle (conditions et boucles)
12 min
Comprendre Twig : les commentaires
2 min
Comprendre Twig : les filtres
3 min
Routes paramétrées & routes multiples : des adresses dynamique porteuses de sens
9 min
Comprendre Twig : générer une URL avec la fonction path()
6 min
Comprendre Twig : l'héritage de gabarit (extends)
10 min
Mise en place d'un thème Bootstrap
8 min
Mise en place de la barre de navigation
4 min
Mise en place finale de la page d'accueil de notre application
13 min
Versionning de notre avancement avec GIT
1 min
Quiz : Démarrage avec Symfony 4
Relations avec la base de données
Introduction : la relation aux bases de données avec Symfony et Doctrine
6 min
Création de la base de données grâce à la CLI
3 min
Comprendre Doctrine : créons notre première Entité pour représenter les annonces
6 min
Comprendre Doctrine : notre premier script de migrations
5 min
Comprendre Doctrine : créer des jeux de fausses données avec les Fixtures
8 min
Rendre nos fausses données plus réalistes avec Faker
8 min
Créer des slugs facilement avec Slugify
5 min
Comprendre Doctrine : interagir avec le cycle de vie des Entités
7 min
Comprendre Doctrine : les relations entre Entités avec l'Entité Image
9 min
Enrichir la Fixture pour créer des images
4 min
Notre premier Controller : le AdController pour la gestion des annonces
Affichage de la liste des annonces
7 min
Récupération des annonces grâce au Repository Doctrine
7 min
Comprendre l'Injection de Dépendances
8 min
Récupération d'une annonce avec son slug grâce au Repository
8 min
Affichage d'une annonce
7 min
Un peu de CSS personnalisé
4 min
Parcourir les images liées à une annonce grâce à la relation entre les 2 entités
9 min
Mise à jour de la barre de navigation
2 min
Liens paramétrés dans la liste des annonces
3 min
Comprendre Twig : utiliser une variable Twig pour factoriser un code
3 min
Comprendre le ParamConverter de Symfony 4
6 min
Symfony et les formulaires
A l'attention des étudiants qui utilisent AdBlock et autres extensions
Créer la page de création d'une annonce
4 min
Découverte du FormBuilder : le fabricant de formulaire
5 min
Comprendre Twig : afficher un formulaire Symfony
9 min
Créer une classe de Formulaire externe et réutilisable
4 min
Comprendre Twig : les fonctions d'affichage de formulaire
3 min
Comprendre Twig : mise en forme du formulaire
4 min
Comprendre Twig : les thèmes de formulaires
9 min
Comprendre Twig : le thème de formulaire Bootstrap 4
3 min
Configurer les champs de formulaire
10 min
Récupérer et sauvegarder les données du formulaire
8 min
Effectuer une redirection vers la page de la nouvelle annonce
3 min
Utiliser les messages Flash pour notifier le visiteur
11 min
Comprendre Twig : les inclusions de template
4 min
Aller plus loin avec les formulaires
Créer des sous-formulaire avec les CollectionType
8 min
Comprendre Twig : personnaliser l'affichage des sous-formulaires
7 min
Ajouter un élément dynamiquement grâce au prototype du CollectionType
8 min
Supprimer un élément dynamiquement grâce au CollectionType
7 min
Faire persister les éléments liés avec le CollectionType
5 min
Correction d'un bug sur les index des sous-formulaires
4 min
Rendre le champ "slug" non obligatoire (option required)
4 min
La validation de formulaire avec Symfony
8 min
Valider l'unicité d'une entité et éviter les doublons !
4 min
Créer un formulaire d'édition pour nos annonces
9 min
Valider les sous-formulaires du CollectionType
5 min
Correction d'un bug lors de la suppression d'éléments du CollectionType
5 min
Refactorisation du code entre les formulaire de création et d'édition
6 min
Versionning de notre avancement avec GIT
2 min
Les utilisateurs et l'authentification dans Symfony
Création d'une entité User pour stocker nos utilisateurs
5 min
La relation OneToMany entre les annonces (Ad) et les utilisateurs (User)
6 min
Mise à jour de la Fixture pour créer de faux utilisateurs
7 min
Des avatars aléatoires pour nos faux utilisateurs avec RandomUser.me
6 min
L'encodage des mots de passe de nos utilisateurs
5 min
Découverte de l'interface UserInterface
6 min
Authentification : déclare un nouveau provider (entité User)
3 min
Authentification : créer le formulaire de connexion
8 min
Authentification : authentifier réellement l'utilisateur
5 min
Authentification : permettre à l'utilisateur de se déconnecter
4 min
Authentification : repérer les erreurs avec la classe AuthenticationUtils
5 min
Créer le formulaire d'inscription : le RegistrationType
9 min
Refactorisation du code entre les classes AdType et RegistrationType
4 min
Enregistrer les données du formulaire d'inscription
6 min
Valider le formulaire d'inscription
5 min
Créer une confirmation de mot de passe durant l'inscription
5 min
Mise à jour de la barre de navigation
3 min
Créer un formulaire d'édition du profil utilisateur
8 min
Créer un formulaire de modification du mot de passe
11 min
Sauvegarder le nouveau mot de passe
9 min
Créer une erreur personnalisée sur le formulaire de modification de mot de passe
6 min
Intégration des utilisateurs dans le reste du site
Afficher l'auteur dans la page d'une annonce
8 min
Créer une page de profil pour les utilisateurs
12 min
Faire les liens vers la page de profil d'un utilisateur
2 min
Créer la page "Mon compte"
3 min
Ajouter des liens de gestion du compte utilisateur
4 min
Mise en place d'une dropdown dans la barre de navigation
7 min
Prendre en compte l'utilisateur connecté lorsqu'on créé une annonce
4 min
Versionning de notre avancement avec GIT
1 min
La sécurité et les autorisations dans Symfony 4
Mise en place des rôles d'utilisateurs
7 min
Modification de la Fixture pour créer un rôle ADMIN et un administrateur
6 min
Récupération des rôles dans l'entité User
11 min
Sécuriser le AdController avec les annotation @IsGranted() et @Security()
10 min
Sécuriser le AccountController avec les annotations @IsGranted() et @Security()
4 min
Afficher des liens et bouton en fonction du statut de l'utilisateur
4 min
Permettre aux utilisateurs de supprimer leurs annonces
6 min
Versionning de notre avancement avec GIT
2 min
Conclusion et ouvertures
2 min
Gérer les pages d'erreurs dans Symfony 4
Comprendre la gestion des pages d'erreurs dans une application Symfony 4
3 min
Créer une page d'erreur 404 personnalisée et la tester
7 min
Créer une page d'erreur 403 personnalisée et la tester
5 min
Faire attention au cache en environnement de production
5 min
Gestion des réservations
Création d'une entité Booking et migration de la base de données
6 min
Modification de la Fixture pour ajouter de fausses réservations
8 min
Création du formulaire de réservation
10 min
Modifier l'apparence du champ DateType avec l'option "widget"
2 min
Ajout d'un champ de commentaire sur les réservations
6 min
Création du lien de réservation à partir d'une annonce
2 min
Sécuriser la page de réservation avec l'annotation @IsGranted()
2 min
Enregistrer une réservation en calculant automatiquement le montant
9 min
Affichage d'une réservation existante
15 min
Utiliser un paramètre GET pour modifier l'affichage d'une réservation
6 min
Validation du formulaire de réservation (partie 1)
3 min
Prendre en compte la disponibilité d'une annonce lors de la réservation
24 min
Utiliser un calendrier Javascript pour empêcher le choix de dates indisponibles
14 min
Utiliser un DataTransformer pour gérer les dates au format français
13 min
Validation des dates du formulaire (partie 2)
5 min
Calculer le nombre de nuits et le montant de la réservation en Javascript
10 min
Création d'une page de liste des réservations
9 min
Versionning de notre avancement avec GIT
1 min
Gestion des commentaires et notations
Création d'une entité Comment pour stocker les avis des visiteurs
6 min
Modification de la Fixture pour ajouter de faux commentaires
5 min
Affichage des commentaires sur la page d'une annonce
5 min
Installation de FontAwesome pour bénéficier d'icônes !
1 min
Afficher les notes sous forme d'étoiles
5 min
Factorisation du template d'affichage des notes sous forme d'icônes
4 min
Calculer et afficher la note moyenne d'une annonce
9 min
Affichage des moyennes sur l'ensemble des annonces
3 min
Personnaliser le CSS afin d'avoir des étoiles dorées pour les notes
2 min
Affichage du formulaire de commentaire sur une réservation
12 min
Enregistrer les données du formulaire de commentaire
4 min
S'assurer qu'un visiteur ne commente qu'une seule fois une annonce
8 min
Affichage des notes sur la liste des réservations
5 min
[Optionnel] Refonte visuelle et uniformisation
Partie 1 : modifications CSS pour des changements globaux
4 min
Partie 2 : Uniformisation des espacements et du format des prix
9 min
Partie 3 : Refonte du formulaire de création d'une annonce
7 min
Partie 4 : Refonte du formulaire d'édition du profil
4 min
Partie 5 : Refonte du formulaire d'inscription
4 min
Partie 6 : Refonte du formulaire de modification du mot de passe
2 min
Partie 7 : Mise en place du Responsive avec la balise méta viewport !
5 min
Créer une interface d'administration pour notre application
Création du controller d'Administration des Annonces : le AdminAdController
11 min
Mise en place d'un habillage différent au sein de l'administration
4 min
Mise à jour de la barre de navigation
6 min
Sécurité : Protéger l'accès à toute l'administration grâce aux ACL
2 min
Créer une page de connexion spécifique pour l'administration
5 min
Création d'un Firewall particulier pour l'administration
5 min
Créer le formulaire de connexion à l'administration
10 min
Permettre à l'administrateur de se déconnecter
4 min
Création du formulaire d'édition des annonces
15 min
Mettre en place un thème de CollectionType à nouveau
17 min
Permettre à l'administrateur de supprimer une annonce
6 min
Exercice : affichez la liste des commentaires !
2 min
Solution : affichez la liste des commentaires !
9 min
Exercice : créez le formulaire d'édition d'un commentaire
2 min
Solution : créez le formulaire d'édition d'un commentaire
13 min
Exercice : permettez à l'administrateur de supprimer un commentaire
1 min
Solution : permettez à l'administrateur de supprimer un commentaire
6 min
Exercice : affichez la liste des réservations
1 min
Solution : affichez la liste des réservations
6 min
Découverte du type de champ EntityType pour l'édition d'une réservation
15 min
Le problème de la validation par l'entité Booking dans 2 formulaires différents
5 min
Découverte de la notion de Groupes de Validation (ValidationGroups)
12 min
Recalculer le montant d'une réservation lors de la modification de l'annonce
4 min
Permettre à l'administrateur de supprimer une réservation
3 min
Versionning de notre avancement avec GIT
1 min
Découverte du concept de Service : mise en pratique avec la Pagination
Introduction aux méthodes des Repositories pour récupérer les données
7 min
Mise en place HTML et utilisation du findBy() pour paginer !
5 min
Placer des contraintes sur les paramètres des routes grâce aux Requirements
6 min
Rendre dynamique la pagination HTML
9 min
Découverte de la notion de Service pour la pagination
4 min
Création du service de pagination
23 min
Factorisation du Twig concernant la pagination
6 min
Intégrer l'affichage de la pagination dans le service de pagination
15 min
Rendre configurable le service de pagination grâce au fichier "services.yaml"
6 min
Aider les futurs développeurs avec les exceptions
5 min
Conclusion : la notion de services et ses avantages
2 min
Versionning de notre avancement avec GIT
1 min
Découverte du DQL et création du Dashboard : Les requêtes avec Doctrine
Mise en place statique du Dashboard dans l'administration
9 min
Nos premières requêtes DQL
6 min
Les fonctions d'agrégation et le tri
10 min
Extraire la récupération des données du Controller grâce à la notion de Service
9 min
Découverte du QueryBuilder pour remplir la homepage du site
13 min
Découverte de Webpack Encore : prendre soin de ses fichiers CSS et JS !
Installation de Webpack Encore dans notre projet
3 min
Mise en place de la bonne structure des fichiers
2 min
Fusionner des fichiers CSS en un seul fichier optimisé
5 min
Le versionning des fichiers CSS et JS afin de contourner les problèmes de cache
8 min
Utiliser SASS dans nos fichiers CSS grâce à Webpack Encore
6 min
Traiter nos fichiers Javascript avec Webpack Encore
6 min
Installation du package Bootstrap avec NPM
2 min
Pouvoir utiliser jQuery partout : le problème des modules Webpack
3 min
Créer plusieurs fichiers Javascript pour optimiser les chargements
6 min
Mise à jour de l'interface d'administration
2 min
Conclusion : non nécessaire mais tellement avantageux !
2 min
Versionning de notre avancement avec GIT
1 min
Déploiement de l'application en production
Création d'un dépôt Git sur la plateforme GitHub et premier "push" de code
3 min
Découverte du fichier .gitignore et des fichiers ignorés
2 min
Hébergement Mutualisé : introduction
2 min
Générer le fichier .htaccess avec le pack symfony/apache-pack
4 min
Hébergement Mutualisé : mise en ligne avec accès SSH
12 min
Hébergement Mutualisé : mise en ligne sans SSH
10 min
Hébergement Mutualisé : faire des mises à jour sans SSH
4 min
Hébergement Mutualisé : faire des mises à jour avec SSH
4 min
Heroku : mise en place de l'application et lien avec GitHub
9 min
Heroku : mise en place de la base de données et mises à jour
12 min
SECTION BONUS : Vidéos à venir sur différents sujets
⚡ AJAX & SYMFONY : INITIATION
🚀 SYMFONY/TWIG : CRÉER SES PROPRES FILTRES !
🎶 SYMFONY : L'AUTOWIRING ET LE CONTAINER DE SERVICES