Lior Chamla : Développez vous bien !/Symfony 4 : les fondamentaux par la pratique

  • 199,99 € ou 3 paiements mensuels de 66,66 €

Symfony 4 : les fondamentaux par la pratique

đŸŽ¶ Initiation Ă  Symfony 4 en 20H par Lior Chamla

✹ 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

  • 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)

  • 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)

Contenu

Introduction

Qu'est-ce que Symfony 4 et pourquoi l'utiliser ?
Aperçu
Ce qu'on va faire ensemble, ce que ça va vous apporter
Aperçu
Les outils nécessaires pour suivre la formation
Aperçu
Mettre en place l'environnement de travail
Aperçu
Mettre en place VSCode pour travailler !
Aperçu
A l'attention des étudiants qui utilisent AdBlock et autres extensions
Tirez profit au maximum de cette formation !
Aperçu

Premiers pas : mise en place de notre application Symfony 4

Avant de commencer : sortie de Symfony 5
Créons notre projet Symfony 4 avec Composer !
Aperçu
Découverte de la structure d'une application Symfony 4
Aperçu
Introduction : le concept de Controller au sein d'une application Symfony 4
Aperçu
Créons notre premier Controller : le HomeController
Séparer les traitements et l'affichage grùce à Twig
Les avantages du langage de templating Twig
Aperçu
Comprendre Twig : L'interpolation (afficher une variable)
Comprendre Twig : les structures de contrĂŽle (conditions et boucles)
Comprendre Twig : les commentaires
Comprendre Twig : les filtres
Routes paramétrées & routes multiples : des adresses dynamique porteuses de sens
Comprendre Twig : générer une URL avec la fonction path()
Comprendre Twig : l'héritage de gabarit (extends)
Mise en place d'un thĂšme Bootstrap
Mise en place de la barre de navigation
Mise en place finale de la page d'accueil de notre application
Versionning de notre avancement avec GIT
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
Aperçu
Création de la base de données grùce à la CLI
Comprendre Doctrine : créons notre premiÚre Entité pour représenter les annonces
Aperçu
Comprendre Doctrine : notre premier script de migrations
Comprendre Doctrine : créer des jeux de fausses données avec les Fixtures
Rendre nos fausses données plus réalistes avec Faker
Créer des slugs facilement avec Slugify
Comprendre Doctrine : interagir avec le cycle de vie des Entités
Comprendre Doctrine : les relations entre Entités avec l'Entité Image
Enrichir la Fixture pour créer des images

Notre premier Controller : le AdController pour la gestion des annonces

Affichage de la liste des annonces
Récupération des annonces grùce au Repository Doctrine
Comprendre l'Injection de Dépendances
Récupération d'une annonce avec son slug grùce au Repository
Affichage d'une annonce
Un peu de CSS personnalisé
Parcourir les images liées à une annonce grùce à la relation entre les 2 entités
Mise Ă  jour de la barre de navigation
Liens paramétrés dans la liste des annonces
Comprendre Twig : utiliser une variable Twig pour factoriser un code
Comprendre le ParamConverter de Symfony 4

Symfony et les formulaires

Créer la page de création d'une annonce
Découverte du FormBuilder : le fabricant de formulaire
Aperçu
Comprendre Twig : afficher un formulaire Symfony
Créer une classe de Formulaire externe et réutilisable
Comprendre Twig : les fonctions d'affichage de formulaire
Comprendre Twig : mise en forme du formulaire
Comprendre Twig : les thĂšmes de formulaires
Comprendre Twig : le thĂšme de formulaire Bootstrap 4
Configurer les champs de formulaire
ALERTE SYMFONY 5
Récupérer et sauvegarder les données du formulaire
Effectuer une redirection vers la page de la nouvelle annonce
Utiliser les messages Flash pour notifier le visiteur
Comprendre Twig : les inclusions de template

Aller plus loin avec les formulaires

Créer des sous-formulaire avec les CollectionType
Comprendre Twig : personnaliser l'affichage des sous-formulaires
Ajouter un élément dynamiquement grùce au prototype du CollectionType
Supprimer un élément dynamiquement grùce au CollectionType
Faire persister les éléments liés avec le CollectionType
Correction d'un bug sur les index des sous-formulaires
Rendre le champ "slug" non obligatoire (option required)
La validation de formulaire avec Symfony
Valider l'unicité d'une entité et éviter les doublons !
Créer un formulaire d'édition pour nos annonces
Valider les sous-formulaires du CollectionType
Correction d'un bug lors de la suppression d'éléments du CollectionType
Refactorisation du code entre les formulaire de création et d'édition
Versionning de notre avancement avec GIT

Les utilisateurs et l'authentification dans Symfony

Création d'une entité User pour stocker nos utilisateurs
La relation OneToMany entre les annonces (Ad) et les utilisateurs (User)
Mise à jour de la Fixture pour créer de faux utilisateurs
Des avatars aléatoires pour nos faux utilisateurs avec RandomUser.me
Aperçu
L'encodage des mots de passe de nos utilisateurs
Découverte de l'interface UserInterface
Authentification : déclare un nouveau provider (entité User)
Aperçu
Authentification : créer le formulaire de connexion
Authentification : authentifier réellement l'utilisateur
Authentification : permettre à l'utilisateur de se déconnecter
Authentification : repérer les erreurs avec la classe AuthenticationUtils
Créer le formulaire d'inscription : le RegistrationType
Refactorisation du code entre les classes AdType et RegistrationType
Enregistrer les données du formulaire d'inscription
Valider le formulaire d'inscription
Créer une confirmation de mot de passe durant l'inscription
Mise Ă  jour de la barre de navigation
Créer un formulaire d'édition du profil utilisateur
Créer un formulaire de modification du mot de passe
Sauvegarder le nouveau mot de passe
Créer une erreur personnalisée sur le formulaire de modification de mot de passe

Intégration des utilisateurs dans le reste du site

Afficher l'auteur dans la page d'une annonce
Créer une page de profil pour les utilisateurs
Faire les liens vers la page de profil d'un utilisateur
Créer la page "Mon compte"
Ajouter des liens de gestion du compte utilisateur
Mise en place d'une dropdown dans la barre de navigation
Prendre en compte l'utilisateur connecté lorsqu'on créé une annonce
Versionning de notre avancement avec GIT

La sécurité et les autorisations dans Symfony 4

Mise en place des rĂŽles d'utilisateurs
Modification de la Fixture pour créer un rÎle ADMIN et un administrateur
Récupération des rÎles dans l'entité User
Sécuriser le AdController avec les annotation @IsGranted() et @Security()
Sécuriser le AccountController avec les annotations @IsGranted() et @Security()
Afficher des liens et bouton en fonction du statut de l'utilisateur
Permettre aux utilisateurs de supprimer leurs annonces
Versionning de notre avancement avec GIT
Conclusion et ouvertures

Gérer les pages d'erreurs dans Symfony 4

Comprendre la gestion des pages d'erreurs dans une application Symfony 4
Aperçu
Créer une page d'erreur 404 personnalisée et la tester
Créer une page d'erreur 403 personnalisée et la tester
Faire attention au cache en environnement de production

Gestion des réservations

Création d'une entité Booking et migration de la base de données
Modification de la Fixture pour ajouter de fausses réservations
Création du formulaire de réservation
Modifier l'apparence du champ DateType avec l'option "widget"
Ajout d'un champ de commentaire sur les réservations
Aperçu
Création du lien de réservation à partir d'une annonce
Sécuriser la page de réservation avec l'annotation @IsGranted()
Enregistrer une réservation en calculant automatiquement le montant
Affichage d'une réservation existante
Utiliser un paramÚtre GET pour modifier l'affichage d'une réservation
Validation du formulaire de réservation (partie 1)
Prendre en compte la disponibilité d'une annonce lors de la réservation
Utiliser un calendrier Javascript pour empĂȘcher le choix de dates indisponibles
Utiliser un DataTransformer pour gérer les dates au format français
Validation des dates du formulaire (partie 2)
Calculer le nombre de nuits et le montant de la réservation en Javascript
Création d'une page de liste des réservations
Versionning de notre avancement avec GIT

Gestion des commentaires et notations

Création d'une entité Comment pour stocker les avis des visiteurs
Modification de la Fixture pour ajouter de faux commentaires
Affichage des commentaires sur la page d'une annonce
Installation de FontAwesome pour bénéficier d'icÎnes !
Afficher les notes sous forme d'étoiles
Factorisation du template d'affichage des notes sous forme d'icĂŽnes
Calculer et afficher la note moyenne d'une annonce
Affichage des moyennes sur l'ensemble des annonces
Personnaliser le CSS afin d'avoir des étoiles dorées pour les notes
Affichage du formulaire de commentaire sur une réservation
Enregistrer les données du formulaire de commentaire
S'assurer qu'un visiteur ne commente qu'une seule fois une annonce
Affichage des notes sur la liste des réservations

[Optionnel] Refonte visuelle et uniformisation

Partie 1 : modifications CSS pour des changements globaux
Partie 2 : Uniformisation des espacements et du format des prix
Partie 3 : Refonte du formulaire de création d'une annonce
Partie 4 : Refonte du formulaire d'édition du profil
Partie 5 : Refonte du formulaire d'inscription
Partie 6 : Refonte du formulaire de modification du mot de passe
Partie 7 : Mise en place du Responsive avec la balise méta viewport !

Créer une interface d'administration pour notre application

Création du controller d'Administration des Annonces : le AdminAdController
Mise en place d'un habillage différent au sein de l'administration
Mise Ă  jour de la barre de navigation
Sécurité : Protéger l'accÚs à toute l'administration grùce aux ACL
Créer une page de connexion spécifique pour l'administration
Création d'un Firewall particulier pour l'administration
Créer le formulaire de connexion à l'administration
Permettre à l'administrateur de se déconnecter
Création du formulaire d'édition des annonces
Mettre en place un thĂšme de CollectionType Ă  nouveau
Permettre Ă  l'administrateur de supprimer une annonce
Exercice : affichez la liste des commentaires !
Aperçu
Solution : affichez la liste des commentaires !
Exercice : créez le formulaire d'édition d'un commentaire
Aperçu
Solution : créez le formulaire d'édition d'un commentaire
Exercice : permettez Ă  l'administrateur de supprimer un commentaire
Aperçu
Solution : permettez Ă  l'administrateur de supprimer un commentaire
Exercice : affichez la liste des réservations
Aperçu
Solution : affichez la liste des réservations
Découverte du type de champ EntityType pour l'édition d'une réservation
Le problÚme de la validation par l'entité Booking dans 2 formulaires différents
Découverte de la notion de Groupes de Validation (ValidationGroups)
Recalculer le montant d'une réservation lors de la modification de l'annonce
Permettre à l'administrateur de supprimer une réservation
Versionning de notre avancement avec GIT

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
Aperçu
Mise en place HTML et utilisation du findBy() pour paginer !
Placer des contraintes sur les paramĂštres des routes grĂące aux Requirements
Rendre dynamique la pagination HTML
Découverte de la notion de Service pour la pagination
Aperçu
Création du service de pagination
Factorisation du Twig concernant la pagination
Intégrer l'affichage de la pagination dans le service de pagination
Rendre configurable le service de pagination grĂące au fichier "services.yaml"
Aider les futurs développeurs avec les exceptions
Conclusion : la notion de services et ses avantages
Versionning de notre avancement avec GIT

DĂ©couverte du DQL et crĂ©ation du Dashboard : Les requĂȘtes avec Doctrine

Mise en place statique du Dashboard dans l'administration
Nos premiĂšres requĂȘtes DQL
Les fonctions d'agrégation et le tri
Extraire la récupération des données du Controller grùce à la notion de Service
Découverte du QueryBuilder pour remplir la homepage du site
Aperçu

Découverte de Webpack Encore : prendre soin de ses fichiers CSS et JS !

Installation de Webpack Encore dans notre projet
Aperçu
Mise en place de la bonne structure des fichiers
Fusionner des fichiers CSS en un seul fichier optimisé
Le versionning des fichiers CSS et JS afin de contourner les problĂšmes de cache
Utiliser SASS dans nos fichiers CSS grĂące Ă  Webpack Encore
Traiter nos fichiers Javascript avec Webpack Encore
Installation du package Bootstrap avec NPM
Pouvoir utiliser jQuery partout : le problĂšme des modules Webpack
Créer plusieurs fichiers Javascript pour optimiser les chargements
Mise Ă  jour de l'interface d'administration
Conclusion : non nécessaire mais tellement avantageux !
Versionning de notre avancement avec GIT

Déploiement de l'application en production

Création d'un dépÎt Git sur la plateforme GitHub et premier "push" de code
Découverte du fichier .gitignore et des fichiers ignorés
Hébergement Mutualisé : introduction
Générer le fichier .htaccess avec le pack symfony/apache-pack
Hébergement Mutualisé : mise en ligne avec accÚs SSH
Hébergement Mutualisé : mise en ligne sans SSH
Hébergement Mutualisé : faire des mises à jour sans SSH
Hébergement Mutualisé : faire des mises à jour avec SSH
Heroku : mise en place de l'application et lien avec GitHub
Aperçu
Heroku : mise en place de la base de données et mises à jour
Aperçu

SECTION BONUS : Vidéos à venir sur différents sujets

Chers Ă©tudiants, si vous ĂȘtes arrivĂ©s jusqu'ici c'est que vous avez bel et bien terminĂ© ce cours ! Bravo Ă  vous et j'espĂšre de tout coeur qu'il vous a plu et que vous en avez tirĂ© profit !

Cette section est prĂ©vue pour accueillir des vidĂ©os bonus qui arriveront en fonction de mes disponibilitĂ©s : ce ne sont pas des vidĂ©os qui Ă©taient prĂ©vues pour cette formation mais des tutoriels que je mettrai en ligne sur YouTube et aussi ici afin de vous permettre d'ĂȘtre au courant qu'ils sont sortis !

Merci encore de m'avoir fait confiance et n'oubliez pas, d'ici à ce qu'on se retrouve : développez vous bien !
⚡ AJAX & SYMFONY : INITIATION
Aperçu
🚀 SYMFONY/TWIG : CRÉER SES PROPRES FILTRES !
Aperçu
đŸŽ¶ SYMFONY : L'AUTOWIRING ET LE CONTAINER DE SERVICES
Aperçu

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 !