Aller au contenu

TP++

1. Pagination de la liste des citations

Pré-requis

Pagination

Travail à réaliser

  1. Installer KnpPaginatorBundle
  2. Mettre en place la pagination sur la liste des citations avec 5 élements par page
  3. Configurer le bundle pour utiliser le thème Bootstrap 5

2. Afficher une citation aléatoire

Pré-requis

Citation aléatoire

Travail à réaliser

Mettre en place une nouvelle page affichant une citation aléatoire.

3. Catégorie - Associer une image

L'objectif est de pouvoir associer une image à chaque catégorie et que cette image soit redimensionnée automatiquement.

Page de visualisation d'une catégorie avec image

Liste des catégories avec image redimensionnée à la volée

3.1 Upload de l'image

Travail à réaliser

Mettre en place l'upload d'image au niveau de chaque catégorie avec VichUploaderBundle, l'image doit ensuite être affichée :

  • sur la page de visualisation d'une catégorie
  • au niveau de la liste des catégories

L'image n'est pas une donnée obligatoire pour la création/modification d'une catégorie.

3.2 Redimensionnement de l'image

Travail à réaliser

Mettre en place le redimensionnement automatiquement des images des catégories avec LiipImagineBundle.

On souhaite :

  • au niveau de la liste des catégories, des miniatures de 64px × 64px
  • au niveau de la page de visualisation, des miniatures de 350px × 250px

4. Système de slug

Slug

Slug - Routes

Un slug permet d'avoir des urls propres et de cacher l'identifiant de la ressource.

Exemple : /category/1 => /category/kaamelott

Travail à réaliser

  1. Mettre en place un slug pour les catégories à partir du nom de la catégorie
  2. Modifier les différentes routes utilisant l'id de catégorie pour utiliser le slug

Pour cela vous pouvez utiliser le bundle StofDoctrineExtensionsBundle.

5. Amélioration du formulaire d'inscription avec un Captcha

Pré-requis

Captcha à l'inscription

Travail à réaliser

Mettre en place un captcha au niveau de la page d'inscription avec Gregwar/CaptchaBundle.

6. Flux RSS

Travail à réaliser

Mettre en place un flux RSS permettant aux utilisateurs de suivre les ajouts de citations sur l'application :

  • Le flux RSS devra être accessible sur cette URI : /rss.xml
  • Ne pas utiliser de bundle
  • Le flux doit être construit avec twig

Pour la valeur lastBuildDate vous devez utiliser la date de création de la citation la plus récente.

Vérifier la validité de votre flux avec le validateur W3C.

Vous pouvez vous inspirer de ce qui a été réalisé sur la démo.

7. Système de "like"

Système de like

Travail à réaliser

Mettre en place un système de "like" permettant aux utilisateurs d'indiquer si il aime ou pas une citation.

  • Affichage du nombre de like au niveau de chaque citation avec une icône de coeur
  • Au clic sur l'icône de coeur on peut "liker" ou "unliker" une citation
  • Au niveau de la page de profil avoir la liste des 5 derniers likes

Règles pour "liker" une citation :

  • Être connecté
  • Ne pas être l'auteur de la citation

8. Ludification et likes

Pré-requis

Travail à réaliser

Ajouter les actions liées au système de "like" dans la ludification :

  • 25 d'exp quand on like une citation
  • 200 d'exp quand un utilisateur like une de nos citations

9. Import de citations depuis une API

Pré-requis

Travail à réaliser

Mettre en place une commande (CLI) pour importer une ou plusieurs citations depuis une des API proposées avec le client HTTP de Symfony.

On indique le nombre de citations à importer avec un argument.

Les citations sont créées avec comme auteur un des administrateurs de l'application.

Exemple: bin/console app:import-kaamelott-quotes 10

Liste des API :

10. PHPStan

Un analyseur de code statique permet d'obtenir des informations sur le comportement d'un programme lors de son exécution sans réellement l'exécuter. Quelques exemples d'utilisation :

  • aide au débogage (exemple: PHPStorm)
  • calcul de la complexité du code
  • respect des standards de code (exemple: PHP-CS-Fixer)
  • détection des variables inutilisées, non typées, etc (exemple: PHPStan)

Travail à réaliser

  1. Mettre en place l'analyseur de code statique PHPStan en le configurant au minimum au niveau 3
  2. Exécuter PHPStan sur votre projet et corriger les erreurs remontées
  3. Ajouter une nouvelle tâche exécutant PHPStan lors de l'étape de vérification du code dans l'intégration continue

Aide : vous pouvez ignorer le dossier migrations/.

11. Administration

Pré-requis

Travail à réaliser

Mettre en place une interface d'administration pour l'application avec le bundle EasyAdmin :

  • L'administration ne doit être accessible qu'aux admins via l'URL /admin
  • L'interface doit être intégralement traduite
  • L'administration doit permettre :
    • l'édition/suppression des citations et utilisateurs
    • la création/édition/suppression des catégories

Vous pouvez vous inspirer de ce qui a été réalisé sur la démo.


Dernière mise à jour: February 27, 2023