Se connecter
Obtenir un accès complet à cette formation
Devenez un pro Symfony 6
Introduction
0 - Liens des directs de la semaine & Communauté Discord
1 - Bienvenue
2 - Introduction et Plan de la formation
3 - Qui suis-je?
4 - Les pré-requis
Application 1: Un générateur de mot de passe
Application 2: Un blog moderne
Application 3: Un clone de SnapChat
Application 4: Un clone d'Indeed
Application 5: Un site de recettes de cuisine
Application 6: Un clone d'Amazon
Application 7: SymfCarte
Application 8: Création d'un bundle
Aller plus loin
Annexes
Séances (versions en live)
5 - Jour 1 (Présentation de l'application de génération de mot de passe, Création du projet, Configuration de la page d'accueil)
6 - Jour 2 (Rappels, Quelques changements avec le client Symfony, Affichage du formulaire, Récupération des données GET)
7 - Jour 3 (Rappels, Génération du mot de passe)
8 - Jour 4 (Refactoring, Importance de la sécurité, Génération de mot de passe sécurisé)
9 - Jour 5 (Refactoring: Création d'une classe service PasswordGenerator)
10 - Jour 6 (Refactoring: Injection de dépendances, Vérification de contraintes)
11 - Jour 7 (Amélioration de la Performance et de la Sécurité de notre application)
12 - Jour 8 (Constantes de classe, Paramètres du conteneur, Pourquoi la méthode GET et non POST?)
13 - Jour 9 (Sauvegarde des préférences de l'utilisateur au niveau de la session côté serveur)
14 - Jour 10 (Sauvegarde des préférences de l'utilisateur au niveau du localStorage)
15 - Jour 11 (L'attribut defer, Le dossier public, Refactoring via le framework JavaScript Alpine.js)
16 - Jour 12 (Astuces Alpine.js: [x-model.number, x-cloak], Avantages et Inconvénients de chacune des approches, Gestion des cookies avec Symfony)
17 - Jour 13 (Prépopulation du formulaire via avec les valeurs de cookies, Refactoring et Stylisation avec Bootstrap)
18 - Jour 14 (Introduction aux tests, Types de tests, Création de nos premiers tests)
19 - Jour 15 (Fin de l'application: Ajout de tests unitaires et d'autres tests d'application)
20 - Jour 16 (Présentation de l'application Bloggy, Création du Projet, Création de l'entité User)
21 - Jour 17 (Création de l'entité Post, Configuration de la base de données, Création des migrations)
22 - Jour 18 (Ajout de created_at et updated_at à User, Création d'un compte utilisateur, PsySH)
23 - Jour 19 (Création d'un compte utilisateur, Évènements Doctrine PrePersist et PreUpdate)
24 - Jour 20 (Création du trait Timestampable, Code source de bundles populaires, Installation de EasyAdminBundle)
25 - Jour 21 (DashboardController, PostCrudController, AdminUrlGenerator, configureDashboard, configureMenuItems)
26 - Jour 22 (yield, Conteneur de services, Injection de dépendances)
27 - Jour 23 (Injection de AdminUrlGenerator, Accès protégé à l'administration, LoginFormAuthenticator)
28 - Jour 24 (Sécurisation de l'administration, Changement de thème, Configuration des champs)
29 - Jour 25 (Personnalisation de la page de login, Filtres, Champs de recherche)
30 - Jour 26 (Namespaces Twig, Autocomplétion, UserCrudController, PostsController)
31 - Jour 27 (Autocomplete en profondeur, Page de détail d'un article, Les filtres Twig, Balise time)
32 - Jour 28 (Discussions, KnpTimeBundle, Système de "Criteria" avec Doctrine)
33 - Jour 29 (Discussions, Utilisation du QueryBuilder, Petite intro au Doctrine Query Language)
34 - Jour 30 (Changements EasyAdmin, Mise à jour de recettes, Requêtes paramétrées, Injections SQL, where, andWhere, orWhere, Profiler)
35 - Jour 31 (Fonctions DQL, createNotFoundException, Pages d'erreurs personnalisées, setParameters, getPathParams)
36 - Jour 32 (Contraintes de paramètres de route, router:match, Expressions régulières)
37 - Jour 33 (Pagination avec KnpPaginatorBundle. symfony composer vs composer)
38 - Jour 34 (Config KnpPaginatorBundle, Bootstrap 5, Définir NUM_ITEMS_PER_PAGE comme constante)
39 - Jour 35 (Config par environnement, Création d'un user via l'admin, eraseCredentials)
40 - Jour 36 (Système d'évènements, EventSubscriber, Hacheur de mot de passe)
41 - Jour 37 (Discussions PHPStorm, Refactoring, ChoiceField)
42 - Jour 38 (Solution allowMultipleChoices(false), Migration vers Symfony 6.1, Code source de Parlons Code)
43 - Jour 39 (Mise à jour des recettes, Classe SharePostFormType, "Cruddy" Controllers)
44 - Jour 40 (Affichage du formulaire de partage d'articles, Stylisation avec Bootstrap 5)
45 - Jour 41 (Validation du formulaire, Récupération des données, Envoi de mail)
46 - Jour 42 (Changements du template de repository, Envoi de mail, Classe Address)
47 - Jour 43 (Messages Flash, TemplatedEmail, Configuration)
48 - Jour 44 (Introduction à Symfony Messenger)
49 - Jour 45 (Messenger, MAILER_DSN, Transport, MESSENGER_TRANSPORT_DSN, Mailtrap)
50 - Jour 46 (Installation et config de Maildev et MailCatcher, Certification Symfony, Arduino, Blockchain)
51 - Jour 47 (Installation de Docker, Images vs Conteneurs, Création de conteneurs)
52 - Jour 48 (docker container ls/start/stop/kill/rm, docker image ls/rm, Binding de ports)
53 - Jour 49 (Binding de ports, docker run -d, docker container logs)
54 - Jour 50 (Machines virtuelles vs Containers, Hyperviseurs, Hyperkit, Volumes, Workdir)
55 - Jour 51 (Docker Desktop vs Docker Engine, docker commit, Dockerfile)
56 - Jour 52 (docker container diff, Notion de tags, Dockerfile, docker build, options -it)
57 - Jour 53 (Option --no-cache, Quand utiliser les tags, Directives CMD et ENTRYPOINT)
58 - Jour 54 (Mise en pratique CMD et ENTRYPOINT, Estimation du coût d'un projet)
59 - Jour 55 (Shell form, Exec form, JSON array format, C'est quoi un shell?)
60 - Jour 56 (docker image history Scripts BASH, Variables d'environnement)
61 - Jour 57 (Bonnes pratiques, Images nginx et bash, COPY, WORDKIR)
62 - Jour 58 (Découverte de Inertia.js + Symfony)
63 - Jour 59 (Mise à jour du projet à Symfony 6.1, Problème de sécurité)
64 - Jour 60 (Paramètres du conteneur. Variables d'environnement, Recette de configuration Docker)
65 - Jour 61 (Intégration de Docker et le client Symfony)
66 - Jour 62 (bin/console vs symfony console, Fichier de config php.ini, Génération de migration pour la BD PostgreSQL)
67 - Jour 63 (Doctrine ORM Fixtures, Scripts bash: reset_db.sh et load_fixtures.sh)
68 - Jour 64 (docker-compose vs docker compose, Option --append, DoctrineExtensions, Package Faker)
69 - Jour 65 (Modificateurs Faker, SluggerInterface, Populer la base de données en production)
70 - Jour 66 (Scripts Bash, Composer Scripts, Fichier Makefile, @auto-scripts, symfony-cmd, etc)
71 - Jour 67 (Refactoring AppFixtures, Composer Scripts, Fichier Makefile)
72 - Jour 68 (Requêtes Doctrine, L'annotation Entity, Doctrine Event Listeners)
73 - Jour 69 (Sluggable de StofDoctrineExtensionsBundle, Système de slugs d'OpenClassrooms)
74 - Jour 70 (Configuration de Gedmo\Sluggable, Refactoring, Implémentation du système de slugs à la OpenClassrooms)
75 - Jour 71 (Création d'exceptions personnalisées)
76 - Jour 72 (Gestion d'exceptions personnalisées, Évènement kernel.exception, symfony proxy, mkcert)
77 - Jour 73 (Création de l'entité Comment, Création de commentaires fictifs, Affichage des commentaires)
78 - Jour 74 (Création de commentaires fictifs, Administration des commentaires)
79 - Jour 75 (Filtre/Recherche de commentaires, Affichage des commentaires)
80 - Jour 76 (Formulaire de création de commentaires, Validation des commentaires)
81 - Jour 77 (Activation/Désactivation des commentaires, Exploration des collections)
82 - Jour 78 (Différence entre matching et filter [Performance], Fonctions fléchées)
83 - Jour 79 (getActiveComments, Entité Tag, Relation ManyToMany entre Post et Tag)
84 - Jour 80 (Problème de n + 1 queries, Réduction du nombre de requêtes, Ajout de Tags fictifs)
85 - Jour 81 (Apprendre à utiliser MySQL par la pratique [Partie 1])
86 - Jour 82 (Projet Inertia.js - Apprendre à utiliser MySQL par la pratique [Partie 2])
87 - Jour 83 (Apprendre à utiliser MySQL par la pratique [Partie 3])
88 - Jour 84 (Création d'un script bash "symfony server:stop", Jointures de tables)
89 - Jour 85 (Relations: OneToOne, OneToMany, ManyToMany)
90 - Jour 86 (Migrer vers Symfony 6.2, Doctrine Owning Side vs Inverse Side, Discussions de tout et de rien)
91 - Jour 87 (Problème de n+1 queries, Problème avec les fixtures, Left join avec tags)
92 - Jour 88 (Bien organiser ses contrôleurs et ses actions)
93 - Jour 89 (Filtrer les articles par tag, Optimisation de requêtes)
94 - Jour 90 (Correction de bug avec publishedAt, Refactoring AppFixtures, Laravel Pint, PHPStan, PHP-CS-Fixer)
95 - Jour 91 (Bonne idée de passer un array au paginateur? MEMBER OF vs IN)
96 - Jour 92 (Découverte des filtres Doctrine)
97 - Jour 93 (Paramètres de filtres Doctrine, Fichier .symfony.local.yaml)
98 - Jour 94 (Articles similaires: Requête Doctrine Avancée)
99 - Jour 95 (Mise à jour du projet PasswordGenerator, Refactoring DoctrineSubscriber, Extension Twig)
100 - Jour 96 (Derniers articles, Articles les plus commentés)
101 - Jour 97 (Markdown, Caching avec Twig)
102 - Jour 98 (HTTP Caching)
103 - Jour 99 (Symfony Cache: Cache Pools, Cache Items, Cache Adapters)
104 - Jour 100 (Forward Proxy, Reverse Proxy, ESI: Edge Side Includes)
105 - Jour 101 (Récapitulatif, HttpKernel, HttpCache, Vider le cache programmatiquement)
106 - Jour 102 (TwigSubscriber, Variables globales Twig, Symfony Cache en pratique)
107 - Jour 103 (Discussions Mini-Clone de Google Drive, HTTP Cache en pratique)
108 - Jour 104 (Vulnérabilité Cache Control, symfony run, Librairies & Astuces)
109 - Jour 105 (Sitemap, Recherche d'articles)
110 - Jour 106 (Discussions, Formulaire de recherche d'articles)
111 - Jour 107 (Affichage des résultats de la recherche, Meilisearch vs Algolia vs Typesense, Elasticsearch)
112 - Jour 108 (Installation de Meilisearch, Création d'index, Ajout de documents)
113 - Jour 109 (Premiers pas avec Meilisearch: Recherche, Filtrage, Settings, Clés, etc)
114 - Jour 110 (Intégration de Meilisearch au sein d'un projet Symfony)
115 - Jour 111 (Intégration de Meilisearch au sein de notre projet Bloggy)
116 - Jour 112 (Recherche brute avec Meilisearch, Symfony UX, Inertia)
117 - Jour 113 (Utilisation de Meilisearch sur symfony.com, Symfony UX Live components)
118 - Jour 114 (Introduction à Stimulus.js)
119 - Jour 115 (Targets, Values et Actions Stimulus.js)
120 - Jour 116 (Installation de Symfony UX Turbo, Installation de Bootstrap via NPM)
121 - Jour 117 (Turbo Drive, Turbo Frames et Turbo Streams)
122 - Jour 118 (Messages de succès, Réinitialisation du formulaires, data-turbo-temporary)
123 - Jour 119 (Contrôleurs Stimulus: auto-hide et scroll-to-highlight)
124 - Jour 120 (Premiers pas avec Mercure, Turbo et Mercure)
125 - Jour 121 (Utilisation de Mercure pour la publication en temps réel des commentaires)
126 - Jour 122 (Système d'autorisation de Mercure: Messages publics vs Messages privés)
127 - Jour 123 (Spécification du protocole Mercure, Configuration "anonymous", Avantages du bundle Symfony Mercure)
128 - Jour 124 (Discussions, Mon livre sur Inertia, Hub Discovery, Encryption, Erreurs de déploiement, etc)
128 - Jour 125 (Pagination des résultats de recherche, Article précédent et Article suivant, etc)
129 - Jour 126 (Amazon Web Services, Déploiement du Hub Mercure sur AWS Elastic Beanstalk)
Jour 34 (Config KnpPaginatorBundle, Bootstrap 5, Définir NUM_ITEMS_PER_PAGE comme constante)
Contenu verrouillé
Acheter cette formation afin de débloquer ce contenu
Si vous ne l'avez pas déjà fait,
veuillez vous connecter
.