tp3 - Newshare

Ce TP consiste à créer une application de partage de fichiers nommée “Newshare” en utilisant le framework Symfony. L’objectif est de mettre en pratique les concepts appris dans les cours précédents et de se familiariser avec le framework Symfony.

Objectif

Réaliser un système de news sharing avec Symfony, à la “reddit”, sans la partie commentaires.

Fonctionnalités

  • Publier un lien
  • S’inscrire/Se connecter
  • Voir les derniers liens publiés
    • Voir les liens publiés par une personne
    • Voir ses liens up-voted/down-voted
  • Voter pour des liens
  • Supprimer ses liens
  • Donner un score aux gens qui publient, leur “karma”.

Wireframes

Homepage.jpg

Homepage.jpg

Homepage.jpg

Homepage.jpg

Homepage.jpg

Étapes

1 - Getting started

Installation du Framework Pour installer le Framework, il faut d’abord installer Symfony CLI. Cette invite de commande, disponible ici, permet de : Créer de nouveaux projets Symfony … Quelles sont les fonctionnalités principales du Symfony CLI ? Créez un projet symfony avec la commande …

2 - Doctrine

Pour ce projet, on va avoir besoin de définir la structure de la base de données. Pour cette partie, on ne va pas créer l’entité User. erDiagram User { string email string password date createdAt } Link { User user string title text url date createdAt } Reaction { User user Link link date createdAt …

3 - Squellette de l'application

Ressources Create your First Page in Symfony (Symfony Docs) Controller (Symfony Docs) Réflexion sur l’architecture de l’application Première réflexion : quelles routes qui vont devoir être créées dans l’application en fonction des différentes vues ? De manière générale, les bonnes pratiques sont les …

4 - Formulaires

Ressources forms Intégration dans le projet Qu’est-ce qu’un formulaire Symfony ? Créez, directement des formulaires dans le controller pour gérer vos entités en utilisant la méthode du controller $this->createFormBuilder..., l’afficher dans twig et gérer son contenu avec …

5 - Securité

Avant d’entrer dans le sujet Security (Symfony Docs) Définir les termes suivants : Providers Firewalls Access Control Roles et Voters passport badge N.B. : On n’utilisera pas FOSUserBundle, car ce bundle est inutile (je suis pas sûr qu’en 2024 ça soit encore utilisé) Définir les termes …

6 - Services et DI

Travail préparatoire Services À quoi sert un service dans Symfony ? Avez-vous déjà utilisé des services dans ce projet ? Si oui, lesquels ? Définir les termes suivant : Dependency Injection, Service, Autowiring, Container Premier service Extraire l’envoi d’email de l’inscription et …

7 - validation de données

Data Validation Validateurs À quoi sert le validateur ? Dans quel contexte peut-on valider des données ? Mise en place Mettre en place les validations sur l’inscription, la publication d’un lien. Le titre du lien est obligatoire. Il faut également penser à valider l’unicité des …

8 - Serializer

Avant-propos How to use serializer Serializer Quelles sont les différentes parties du Serializer et à quoi servent-elles ? Implémentation L’objectif de cette partie est de faire une API publique. L’API aura plusieurs actions : Récupérer la liste des 100 derniers post. GET /api/links Récupérer la …

9 - Api Platform

Ressources Getting Started with API Platform API Platform L’objectif de cette partie est de présenter API Platform, un outil populaire qui ajoute des fonctionnalités dans symfony. Qu’est ce que API Platform ? Ajoutez API platform au projet et modifiez toutes les entités en conséquence.