JUPITER Nicolas, BRELAUD Pierre
Ce projet a été développé dans le cadre d'une semaine de travail sur le framework Symfony. Sur cette semaine, 1 jour a été consacré à l'apprehension du framework ainsi que des révisions sur le PHP orienté objet, 3 jours pour la conception (UML) et le développemnt. Le dernier jour a lui été mis à profit pour le développent d'une application ionic utilisant une API REST pour se connecter à notre base de donnée.
Ce projet consistait à création d'un site de réservation de logement entre particuliers
Durant le premier jour, nous nous sommes occupé à deux de la conception de la base de donnée.
Voici la modélisation UML :
- Symfony 4
- Wamp Server
- Phpstorm
- Umlet (Conception UML)
Pour le développement, nous nous sommes rapidement mis d'accord pour diviser les tâches en deux.
-
Je me suis occupé de la partie front avec principalement l'affichage de tous les biens, la visualisation d'un bien, la page d'accueil
-
Nicolas c'est occupé de la partie admin et notamment de la gestion des utilisateurs, de la connection, et des formulaires
Voici les éléments de la structure de Symfony que nous avons principalement utilisés :
-
Config - Nous permet notamment la gestion des routes via le fichier "routes.yaml"
-
Public - Utilisé pour stocker nos fichier statiques (ex : images, feuilles de style css, javascript...)
-
Src
- Controller - Dossier où sont situés les controllers qui nous permettent d'afficher une vue avec des paramètres
public function index() { return $this->render('back/home.html.twig', [ ]); }
- Entity - Dossier contenant les différents tables de la base de données sous forme d'entité, composé par exemple de getter et setter
public function getId(): ?int { return $this->id; } public function getName(): ?string { return $this->name; }
- Form - Contient les fichiers nous permettant de définir des formulaires réutilisables dans le controller qui le passera à la vue
$builder->add('title', TextType::class, [ 'attr' => ['class' => 'form-control'], 'required' => false ])
- Migrations - Contient les différents fichiers de migration de la base de donénes
- Repository - Les Repository permettent d'accéder aux contenu de la base de données, c'est ici que toutes nos requetes vers la BDD seront effectuées
public function getAccomodationAverageMarks($accomodationId) { $qb = $this->createQueryBuilder('a'); $qb->join('a.reviews', 'r'); $qb->where('a.id = ' . $accomodationId); $qb->select($qb->expr()->avg('r.mark')); return $qb->getQuery()->getOneOrNullResult(); }
-
Templates - Dossier contenant toutes nos vues. Nous avons décidé de découpez ce dossier en 4 parties :
- Front - les pages visibles par tous les visiteurs
- Back - les pages contenant la partie administration d'un utilisateur (création de logement, modification du profil...)
- Registration - Création d'un compte
- Security - Login
- Nous avons également créé des templates twig (ex: menu de navigation) qui sont réutilisables dans tous les fichiers grâce à un extend.
{% extends 'front/layout.html.twig' %}
Pour les vues, symfony utilise des fichiers twig. Ces fichiers permettent d'avoir du contenu HTML mais également d'utiliser des variables (qui nous seront envoyées par le controller) et de les traiter.
{% set difference = date("now").diff(date(review.date)) %} {% set leftDays = difference.days %} {% if leftDays == 0 %} Today, {% elseif leftDays == 1 %} 1 day ago, {% else %} {{ leftDays }} days ago, {% endif %}
Pour le moment, la page d'accueil est présente avec la possibilité d'effectuer une recherche de logement (nm, ville, pays) + la liste des biens sous forme de card
Le détail d'un bien est visible
- Caratéristiques
- Description
- Equipements
- Images
- Avis (possibilité d'ajouter un avis si connecté)
- Propriétaire
Une page de recherche est créée avec le bien sous forme de card
- Création de compte
- Modification compte
- Connection
- Ajout d'un bien
- Modification/Suppresion d'un avis
- Affichage des disponibilités (calendar)
- Map
- Gestion des photos (upload)
- Gestion des réservation
- Gestion deds disponibilités
- Gestion factures
- Gestion favoris