EasyAdmin : champs virtuels qui ne s'affichent pas dans un CrudController
Un DownloadLogCrudController qui refusait de rendre des champs calculés. Diagnostic complet et solution avec setVirtual(true) + template Twig custom.
amar@grenoble:~$ cat carnet.md
// articles techniques, bugs rencontrés en production et étapes de mon parcours.
Un DownloadLogCrudController qui refusait de rendre des champs calculés. Diagnostic complet et solution avec setVirtual(true) + template Twig custom.
Comment ajouter un paywall freemium avec SenePay (mobile money Sénégal), de l'architecture avec voter Symfony au webhook idempotent. Les trois règles d'or du paiement.
Migration vers PHP 8.4 : nullables implicites dépréciés, comportement Doctrine sur les datetime, et le cache prod qui révèle tout.
Compiler dynamiquement des PDF d'annales propres et paginés avec ReportLab : mise en page Platypus, en-têtes récurrents, et pont avec Symfony via Process.
Découverte d'un problème SEO critique : un SPA client-side invisible pour les crawlers. Diagnostic avec curl et bascule vers un rendu serveur Symfony + Turbo.
Les choix d'architecture derrière SyllVS, un SaaS de gestion de flotte : backend Symfony API REST/JWT, front React/Redux Toolkit avec RTK Query, multi-tenant et monnaie en entier.
Des déconnexions aléatoires causées par un binding JWT à une empreinte navigateur trop stricte (window.innerWidth). Diagnostic et compromis sécurité/UX.
Afficher des statistiques d'analytics (base séparée) dans un dashboard EasyAdmin qui vit sur une autre base. Solution avec multi-connexion Doctrine et DBAL.
Comment faire cohabiter une quinzaine d'applications en production sur un seul VPS Ubuntu avec Apache, PHP-FPM et MySQL, sans tout casser : isolation par pool et par user.