Formation Symfony “From the Book”

Publié le

20 sept. 2021

Formation en 3 jours (21 heures)

Objectifs

Faire acquérir aux participants les connaissances des mécanismes de base du framework PHP Symfony.

Description

  • Le contenu est actualisé régulièrement afin de toujours couvrir la dernière version de Symfony.
  • Le parcours pédagogique se présente sous la forme d'un projet d'application internet sur le thème de la pâtisserie, réalisé par chaque participant. Des travaux pratiques ont lieu tout au long de la formation, qui mènent progressivement les participants à corriger leurs erreurs.
  • L'accent est mis sur les bonnes pratiques.

Matériel pédagogique fourni

Le formateur distribuera les supports de la formation en format électronique à la fin de la formation.

D'autre part, le travail pendant ces 3 jours donnera lieu à la création d'une application web versionnée étape par étape. Chaque participant est invité à garder sur sa machine le code du projet de formation, qu’il aura rédigé lui-même avec l’aide du formateur, car ce code pourra servir de base technique pour de futurs projets.

Prérequis

Afin de pouvoir profiter pleinement de la formation, les participants devront impérativement avoir une expérience professionnelle préalable dans les domaines suivants :

  • développement PHP orienté objet
  • utilisation d'une base de données relationnelle

Les participants devront avoir un ordinateur avec un environnement LAMP comprenant de préférences les éléments suivants :

  • Une connexion internet permettant l'installation d'extensions PHP et de paquets depuis packagist et le travail en toute aisance (si formation hors de nos locaux),
  • Un IDE maîtrisé (PHPStorm, SublimeText, VSCode, ...),
  • Un shell UNIX,
  • Une version de PHP actuellement supportée (https://www.php.net/supported-versions.php),
  • Git installé (utile pour des dépendances de composer),
  • Un serveur MySql/MariaDB par personne,
  • Les droits d'administrateur sur la machine,

Il est conseillé de permettre aux participants d'utiliser un éditeur de texte avec lequel ils se sentent le plus à l'aise afin de se concentrer au maximum sur la formation. Il n'est pas nécessaire d'installer Symfony, cette partie sera couverte pendant la formation.

Plus généralement, si la formation se déroule dans les locaux du client, il est demandé qu'une salle permettant d'accueillir l'ensemble des participants ainsi que le formateur soit réservée pendant l'intégralité de la durée de la formation. Un moyen de présentation écran (projecteur ou téléviseur plat de grande taille) devra être présent dans cette salle afin de permettre aux participants de visualiser l'écran du formateur. Un paperboard ou tableau effaçable et une connexion internet seraient également appréciés.

Programme

Présentation

  • Pourquoi un framework
  • Apports de Symfony
  • Communauté

Installation & configuration

  • Composer
  • Installer Symfony avec composer create-project
  • Symfony Flex
  • Symfony project architecture

Fichier de configuration

  • Les possibilités de configuration de language : yml / xml / annotation, et pourquoi?
  • L’environnement Symfony
  • Recommandations Symfony & ce qui sera utilisé lors de la formation

Créer une première action

  • Créer un contrôleur qui affiche une chaîne de caractères
  • Créer le routing

Autoloading

  • Composer autoloader
  • PSR-4

Afficher la liste des gâteaux

  • Utiliser PDO pour récupérer les gâteaux
  • Les afficher simplement

Twig

  • Présentation des instructions de base
  • Intégration de Symfony

Conventions de nommage et emplacement de templates

  • Créer un premier template pour lister les gâteaux
  • Rendre ce template depuis le contrôleur

Assets (ajout de css)

  • Que sont les assets?
  • Utiliser webpack-encore pour compiler les assets

Debugging

  • Debug toolbar
  • dump()

Configuration de Symfony

  • Paramètre, Paramètres fournis par Symfony (ex : kernel.root_dir)
  • Comment récupérer un paramètre depuis un contrôleur
  • Utiliser les paramètres Symfony pour configurer PDO depuis le contrôleur

Paramètres de routing

  • Comment définir des paramètres de routing
  • Comment récupérer ces paramètres depuis le contrôleur
  • Créer une route display cake en utilisant un paramètre de routing

Twigs paths & urls

  • Comment générer des paths & urls depuis un template twig
  • Ajouter des liens dans les templates du toyproject

Refactoring du contrôleur

  • Créer un singleton pour configurer PDO à l’intérieur du contrôleur

Twig : héritage & blocks

  • Comment étendre un template
  • Comment définir des blocks
  • Créer un template de layout
  • Etendre ce layout

HTTP status codes

  • Qu’est-ce qu’un status code
  • Comment configurer le response status code (renvoyer une exception http)
  • Renvoyer un exception quand le gâteau n’est pas trouvé
  • Détailler les messages d’erreur dans le profiler

Créer un gâteau (1ère Partie)

  • Créer contrôleur, template et route
  • Erreur calculée sur le navigateur: "le gateau avec l’id create n’existe pas"

Affiner le routing

  • Ajouter des conditions (requirements)

Créer un gâteau (2ème Partie)

  • Utiliser $_POST pour récupérer les données soumises
  • Insérer des données manuellement avec PDO
  • Ajouter une redirection vers la liste des gateaux quand le gâteau a été créé
  • Quelques explications sur RedirectResponse

Requête Symfony

  • Afficher des paramètres de la requête HTTP disponibles (explication de l’objet request)
  • Comment avoir la requête dans le contrôleur
  • Retirer les usages de $_POST et les remplacer par la requête

Session (pour ajouter un message flash)

  • Décrire le session bag
  • Comment ajouter des messages flash dans le session bag
  • Utiliser le raccourci contrôleur addFlash()
  • Afficher des messages flash depuis un template twig

Formulaires symfony (1ère partie)

  • Comment les FormType sont composés
  • Introduction au FormBuilder
  • Créer un FormType de création de gâteaux avec des champs simples
  • Comment instancier le formulaire depuis un contrôleur (createForm())

Rendre un formulaire symfony

  • Fonctions twig pour formulaires
  • Rendre notre FormType de création de gâteaux

Formulaires symfony (2ème partie)

  • Passer la requête au formulaire
  • Récupérer les données du formulaire
  • Utiliser les données du formulaire pour les sauvegarder

Validation symfony

  • Présentation
  • Appliquer des règles de validation sur entités et champs de formulaires
  • Utiliser la méthode isValid()
  • Ajouter de la validation à notre formulaire

Doctrine

  • Le gestionnaire d’entités (entity manager)
  • Les ORM : un peu de théorie
  • Qu’est-ce qu’une entité
  • Comment mapper une entité (yml) configurer doctrine bundle pour le mapping yml
  • Configurer la connexion avec la BDD
  • Écrire dans la BDD,persist() & flush()
  • Créer une entité gâteau

Classe, fichier de mapping

  • Dans le contrôleur

Créer une entité gâteau à partir des données du formulaire

Enregistrer cette entité avec le gestionnaire d’entités

Remplacer le PDO

  • Quelques mots sur DQL
  • Migration de BDD (DoctrineMigration)

Formulaires symfony (3ème partie)

  • Mapper les données du formulaire directement sur l’entité utilisation de la propriété data_class

Sécurité

  • user providers
  • password encoders
  • firewall
  • access_control (protéger certaines URL derrière un firewall)
  • Vérification des droits (is_granted / voter)
  • hiérarchie des rôles utilisateur

Internationalisation

  • Mettre en place les traductions
  • Les utiliser dans twig
  • Utiliser des placeholders dans les traductions
  • Traduction d’entités

Logs

  • Monolog

Swiftmailer

Injection de dépendances

  • Déclaration de services
  • Présentation des events du kernel

Commandes symfony

  • Composant console

Pour aller plus loin

  • Behat
  • Phpspec
  • FosJsRouting
  • Event Listener / Subscriber
  • Dispatching d’events
  • API REST / Sérialisation
  • Bundles utiles recommandés par KNP Labs

Mais comment financer ma formation ?

Nous sommes datadockés, ainsi votre formation peut être prise en charge par votre OPCO en totalité (ou partiellement selon votre budget formation disponible) ! Si vous avez des doutes ou des besoins particuliers, vous pouvez contacter Amandine, notre responsable formations => hello@knplabs.com.

Adaptation des locaux et de la formation aux stagiaires en situation de handicap

Nantes :

Nos locaux se trouvant dans une secteur sauvegardé de Nantes et étant classés au titre des monuments historiques, il n’est pas possible d’aménager de rampe d’accessibilité ou d’ascenseur menant à nos locaux.

Ainsi, si l’un ou plusieurs stagiaires inscrits à l’une de nos formations sont en situation de handicap, nous louons une salle accessible en dehors de nos locaux dans Nantes afin que le/les stagiaires puissent bénéficier de la formation dans les meilleures conditions possibles.

Caen :

Les locaux sont de plein pieds, l’accès par l’arrière du bâtiment est possible pour les publics en situation de handicap.

N’hésitez pas à nous contacter pour toute autre demande spécifique, nous nous ferons un plaisir de vous accompagner pour répondre au mieux à vos besoins en formation.

Publié par

Eve Vinclair-Berkemeier
Eve Vinclair-Berkemeier

People Manager @ KNPLabs

Scrum Mistress - AFOL at home and at work :D Helping hand for client projects and internal organization of our teams at KNP.

Commentaires