-
Installation de Symfony : Assurez-vous d'avoir Symfony CLI installé. Si ce n'est pas le cas, suivez cette documentation pour l'installer.
-
Création du Projet : Utilisez la commande suivante pour créer un nouveau projet Symfony appelé
lumi-design
:symfony new lumi-design --version="7.1.*" --webapp
-
Configuration de la Base de Données : Ouvrez le fichier
.env
et configurez la variableDATABASE_URL
pour qu'elle pointe vers votre base de données. Par exemple :DATABASE_URL="mysql://username:[email protected]:3306/lumi_design"
-
Création de la Base de Données : Utilisez la commande suivante pour créer la base de données :
php bin/console doctrine:database:create
-
Génération de l'Entité : Utilisez le make:entity pour créer l'entité
Product
:php bin/console make:entity Product
-
Définition des Champs : Ajoutez les champs suivants à l'entité
Product
:// src/Entity/Product.php namespace App\Entity; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: ProductRepository::class)] #[UniqueEntity(fields: ['name'])] class Product { #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(length: 255)] private ?string $name = null; #[ORM\Column(length: 255)] private ?string $slug = null; #[ORM\Column(type: Types::TEXT, nullable: true)] private ?string $description = null; #[ORM\Column(length: 255, nullable: true)] private ?string $image = null; #[ORM\Column(type: Types::DECIMAL, precision: 7, scale: 2, nullable: true)] private ?string $price = null; #[ORM\Column] private ?int $stock = null; #[ORM\Column] private ?\DateTimeImmutable $createdAt = null; #[ORM\Column(nullable: true)] private ?\DateTimeImmutable $updatedAt = null; // getters and setters... }
-
Génération de l'Entité : Utilisez le make:entity pour créer l'entité
Category
:php bin/console make:entity Category
-
Définition des Champs : Ajoutez les champs suivants à l'entité
Category
:// src/Entity/Category.php namespace App\Entity; use Doctrine\ORM\Mapping as ORM; #[ORM\Entity(repositoryClass: CategoryRepository::class)] #[UniqueEntity(fields: ['name'])] class Category { #[ORM\Id] #[ORM\GeneratedValue] #[ORM\Column] private ?int $id = null; #[ORM\Column(length: 255, unique: true)] private ?string $name = null; // getters and setters... }
-
Ajout du Champ
category
: Modifiez l'entitéProduct
pour ajouter une relation ManyToOne versCategory
:// src/Entity/Product.php // ...other use statements use App\Entity\Category; #[ORM\Entity(repositoryClass: ProductRepository::class)] class Product { // ...other properties #[ORM\ManyToOne(inversedBy: 'products')] private ?Category $category = null; // getters and setters... }
-
Génération des Fichiers de Migration : Utilisez la commande suivante pour générer les fichiers de migration :
php bin/console make:migration
-
Exécution de la Migration : Appliquez les migrations à la base de données :
php bin/console doctrine:migrations:migrate
- Créer un controller
HomeController
dans le dossierFront
avec une méthodeindex
pour afficher tous les produits :php bin/console make:controller Front/HomeController
-
Modifier
HomeController
pour afficher une vue avec tous les produits. -
Créer une vue
index.html.twig
pour afficher la liste des produits.
- Créer un fichier
base.html.twig
pour définir la structure de base du site.
- Créer des fichiers de partials pour les sections réutilisables de votre site (par exemple, header, footer).
- Installer les fixtures via Composer :
composer require --dev orm-fixtures
- Créer des fixtures pour l'entité
Category
. - Créer des fixtures pour l'entité
Product
avec une dépendance surCategory
. - Utiliser des références pour lier les produits aux catégories dans les fixtures.
- Ajouter une annotation
HasLifecycleCallbacks
à l'entitéProduct
. - Ajouter des méthodes
prePersist
etpreUpdate
pour définir les dates de création et de mise à jour.