Pour commencer, j'ai utilisé la commande suivante pour créer le projet avec Symfony version 6.4 et Webapp :
symfony new Brace_Armchair --webapp --version=6.4
J'ai configuré l'environnement de base de données en créant le fichier .env.local et en y ajoutant la ligne suivante :
DATABASE_URL="mysql://root:@127.0.0.1:3306/jenny_way?serverVersion=8.0.32&charset=utf8mb4"
Le premier contrôleur, HomeController, a été créé avec la commande suivante :
php bin/console make:controller
Pour que la page d'accueil s'affiche dès l'entrée sur le site, j'ai modifié la route dans HomeController.php : De :
#[Route('/home', name: 'app_home')]
#[Route('', name: 'app_home')]
Pour ajouter Bootstrap au projet, j'ai utilisé la commande suivante :
php bin/console importmap:require bootstrap
J'ai créé la base de données jenny_way avec la commande suivante :
php bin/console doctrine:database:create
Les entités suivantes ont été créées avec leurs relations :
php bin/console make:entity
Relations entre les entités :
J'ai généré les migrations avec la commande suivante :
php bin/console make:migration
Les migrations ont ensuite été appliquées à la base de données avec :
php bin/console doctrine:migrations:migrate
Enfin, j'ai vérifié dans phpMyAdmin que la base de données a bien été migrée correctement.
composer require --dev orm-fixtures
Instancier toutes les entités que l'on souhaite enregistrer dans la base de données dans la méthode load de la classe AppFixtures.
Dans le fichier AppFixtures.php, ajouter les données suivantes à insérer en base de données : PLUMP SAVOIRDI SOFA QUARTER LUMINARO PLOP CHAIR SINUKUAN ISABLE PUTO POUF CLOUDS LOOP JOJO
php bin/console make:controller ProductsController
php bin/console doctrine:fixtures:load
php bin/console make:controller
php bin/console make:controller
Étapes : Création de l'entité Newsletter : php bin/console make:entity Newsletter Propriétés : email et subscribedAt.
Migration de la base de données : php bin/console make:migration php bin/console doctrine:migrations:migrate.
Création du formulaire NewsletterType : php bin/console make:form NewsletterType.
Création du contrôleur SubscriberController : php bin/console make:controller SubscriberController. Traitement du formulaire et logique d'envoi d'email :
Ajout du formulaire dans subscriber/subscribe.html.twig. Installation de Mailer : composer require symfony/mailer. Configuration du service d'email dans .env avec MAILER_DSN. Test de l'envoi d'emails avec Mailhog (environnement de développement) : brew install mailhog.
Étapes : Création du CRUD pour l'entité Product : php bin/console make:crud.
Gestion de l'administration :
Création d'une interface pour l'administrateur permettant d'ajouter, modifier et supprimer des produits via EasyAdmin.
Étapes : Création de l'entité User avec les propriétés email, password, et roles : php bin/console make:user.
Migration de la base de données : php bin/console make:migration php bin/console doctrine:migrations:migrate.
Génération de fixtures utilisateurs : php bin/console make:fixtures UserFixtures php bin/console doctrine:fixtures:load.
Création d'un formulaire de login : php bin/console make:auth.
Ajout des fonctionnalités d'inscription et connexion pour les utilisateurs :
Modification du formulaire d'inscription (RegistrationController). Gestion des rôles pour ROLE_USER et ROLE_ADMIN.
Étapes : Création d'une méthode show dans ProductController pour afficher les détails d'un produit.
Création de la vue show.html.twig pour afficher les informations spécifiques à chaque produit.
Étapes : Création d'une entité ProductImage pour gérer les images supplémentaires des produits.
Migration de la base de données et gestion de l'upload des images via un formulaire.
Création d'une méthode pour ajouter des produits au panier dans CartController.
Création des pages du panier et du paiement.
Étapes : Création du formulaire de recherche SearchType : php bin/console make:form SearchType.
Création du contrôleur SearchController pour gérer la logique de recherche.
Ajout de la logique de recherche dans ProductRepository pour filtrer les produits.
Intégration du formulaire de recherche dans la barre de navigation (base.html.twig).