Ceci est une ancienne révision du document !
TD n°2
![]() | Tous les exercices utilisent Semantic-UI pour la partie CSS. |
- Projet td2
- Application gestion des contacts (Version BDD)
Objectifs
- Créer des routes, des contrôleurs, utiliser/structurer les templates
- Utiliser l'injection de dépendances
- Créer des services
- Créer des Entities
- Effectuer les opérations CRUD avec Doctrine
Containtes techniques
Intégrer Doctrine au projet :
composer require doctrine maker
Création de la base de données
Configurer la connexion à la base dans le fichier .env :
# customize this line! DATABASE_URL="mysql://db_user:db_password@127.0.0.1:3306/contacts" # to use sqlite: # DATABASE_URL="sqlite:///%kernel.project_dir%/var/app.db"
Créer la base de données contacts :
php bin/console doctrine:database:create
Création d'entity et génération de table
Créer la classe Contact :
php bin/console make:entity Contact
Modifier la classe (ajouter les membres et annotations Doctrine)
Générer le script de création de la table :
php bin/console doctrine:migrations:diff
Exécuter le script de migration pour effectuer les maj dans la BDD :
php bin/console doctrine:migrations:migrate
Opérer les opérations de migration après toute modification de la classe.
Application, fonctionnalités
L'application devra permettre d'effectuer les opérations de base suivantes sur les contacts :
- Lister les contacts
- Rechercher un contact
- Afficher un contact
- Supprimer un contact
- Modifier un contact
- Ajouter un contact
- Sélectionner des contacts
Routes
URL | Méthode | paramètre(s) | Fonctionnalité |
---|---|---|---|
/contacts | GET | Liste des contacts | |
/contact/new | GET | Formulaire de création d'un contact | |
/contact/edit/1 | GET | index:entier | Formulaire de modification du contact d'index 1 |
/contact/update | POST | Validation du formulaire d'ajout ou de modification | |
/contact/display/1 | GET | index:entier | Affichage du contact d'index 1 |
/contacts/search | POST | Recherche et affiche les contacts correspondant au critère | |
/contacts/select | POST | Sélectionne le ou les contacts dont l'index est posté | |
/contacts/delete | POST | Supprime des contacts celui ou ceux dont l'index est posté |
Classes
Namespace | Classe/interface |
---|---|
App\Entity | Contact |
App\Service | ContactSessionManager |
IModelManager |
La classe ContactSessionManager utilisera la Session pour stocker les instances de contact, et les index des contacts sélectionnés.