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 113 (Utilisation de Meilisearch sur symfony.com, Symfony UX Live components)
Contenu verrouillé
Acheter cette formation afin de débloquer ce contenu
Si vous ne l'avez pas déjà fait,
veuillez vous connecter
.