Adrien Gras
Ateliers

Aller plus loin

Pistes optionnelles : e-mails, internationalisation, tests, logs, tâches planifiées et messages asynchrones.

Dans cet atelier, nous allons voir des fonctionnalités supplémentaires pour améliorer notre application Symfony.

Astuce

Cet atelier n'aura pas de consignes "sur des rails" comme les autres ; mais simplement des sujets à explorer et quelques consignes pour creuser l'amélioration de l'application.

Envoi de mail

Symfony dispose d'un composant Mailer et Notification très puissant pour envoyer des emails.

Documentation :

En installant symfony/mailer, un service MailPit sera ajouté à votre stack docker. Vous devrez la redémarrer (down + up -d) pour l'avoir de dispo.

Consigne

Pistes d'améliorations

  • Implémentez l'envoi d'un email de bienvenue lors de la création d'un nouvel utilisateur.
    • Vous pouvez créer un service UserService pour gérer la logique métier liée aux utilisateurs.
  • Implémentez la validation par email lors de l'inscription.
    • Ajoutez les champs nécessaires dans l'entité User (token de validation, date d'expiration, email, etc.).
    • Créez une route et un contrôleur pour gérer la validation de l'email.
    • Créez un email avec un lien de validation à envoyer à l'utilisateur lors de son inscription.
    • Vous devriez regarder la documentation Symfony, un exemple y est donné.
  • Implémentez l'envoi d'un mail lors de la création d'une dépense.

Internationalisation (i18n)

Symfony propose un composant Translation pour gérer l'internationalisation de votre application.

Documentation :

Consigne

Pistes d'améliorations

  • Ajoutez la prise en charge de plusieurs langues dans votre application (par exemple, français et anglais).
    • Configurez le composant Translation dans votre application.
    • Créez des fichiers de traduction pour les différentes langues.
    • Modifiez vos templates Twig pour utiliser les fonctions de traduction.
  • Ajoutez un sélecteur de langue dans la page de paramètre pour permettre aux utilisateurs de choisir leur langue préférée.
  • Stockez la langue préférée de l'utilisateur dans la base de données et appliquez-la lors de sa connexion.

Tests fonctionnels avec Panther

Symfony Panther est un outil permettant d'écrire des tests fonctionnels en utilisant un navigateur réel.

Documentation :

Consigne

Pistes d'améliorations

  • Écrivez des tests fonctionnels pour les principales fonctionnalités de votre application (inscription, connexion, création de portefeuille, ajout de dépense, etc.).
    • Créez une classe de test fonctionnel dans le dossier tests/Functional.
    • Utilisez Panther pour simuler les interactions utilisateur avec l'application.
  • Assurez-vous que les tests couvrent les cas d'utilisation principaux et les scénarios d'erreur.

Gestion des erreurs & logs

Symfony dispose d'un composant Monolog pour gérer les logs et les erreurs dans votre application.

Documentation :

Consigne

Pistes d'améliorations

  • Configurez Monolog pour enregistrer les logs dans des fichiers spécifiques (par exemple, un fichier pour les erreurs, un autre pour les accès, etc.).
  • Ajoutez des logs dans les services et les contrôleurs pour suivre les actions importantes (création de portefeuille, ajout de dépense, etc.).

Scheduler & Commandes

Symfony permet de créer des commandes CLI personnalisées et de les planifier avec un scheduler.

Documentation :

Consigne

Pistes d'améliorations

  • Créez une commande CLI pour envoyer des rapports hebdomadaires par email aux utilisateurs avec le résumé de leurs dépenses.
    • Utilisez le composant Console pour créer la commande.
    • Utilisez le composant Mailer pour envoyer les emails.
  • Planifiez cette commande pour qu'elle s'exécute automatiquement chaque semaine.
    • Vous pouvez utiliser des outils comme cron ou le composant Scheduler de Symfony.

Messenger

Symfony Messenger est un composant permettant de gérer des tâches asynchrone dans votre application.

Documentation :

Consigne

Pistes d'améliorations

  • Utilisez Messenger pour gérer l'envoi d'emails de manière asynchrone.
    • Créez un message pour représenter l'email à envoyer.
    • Créez un handler pour traiter ce message et envoyer l'email.
    • Modifiez le service d'envoi d'email pour utiliser Messenger au lieu d'envoyer l'email directement.
  • Utilisez Messenger pour effectuer des calculs de balance entre utilisateurs de manière asynchrone.
    • Créez un message pour représenter la tâche de calcul de balance.
    • Créez un handler pour traiter ce message et effectuer le calcul.
    • Modifiez le service de gestion des portefeuilles pour utiliser Messenger pour le calcul des balances.

Sur cette page