TP++¶
1. Pagination de la liste des citations¶
Pré-requis
Travail à réaliser
- Installer KnpPaginatorBundle
- Mettre en place la pagination sur la liste des citations avec 5 élements par page
- Configurer le bundle pour utiliser le thème Bootstrap 5
2. Afficher une citation aléatoire¶
Pré-requis
Travail à réaliser
Mettre en place une nouvelle page affichant une citation aléatoire.
3. Catégorie - Associer une image¶
Pré-requis
L'objectif est de pouvoir associer une image à chaque catégorie et que cette image soit redimensionnée automatiquement.
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¶
Pré-requis
Un slug permet d'avoir des urls propres et de cacher l'identifiant de la ressource.
Exemple : /category/1
=> /category/kaamelott
Travail à réaliser
- Mettre en place un slug pour les catégories à partir du nom de la catégorie
- 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
Travail à réaliser
Mettre en place un captcha au niveau de la page d'inscription avec Gregwar/CaptchaBundle.
6. Flux RSS¶
Pré-requis
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"¶
Pré-requis
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
- Mettre en place l'analyseur de code statique PHPStan en le configurant au minimum au niveau 3
- Exécuter PHPStan sur votre projet et corriger les erreurs remontées
- 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.