Mémo Symfony

Créer un projet

Utiliser l’outil Symfony CLI :

symfony new project_name --version=7.4 --webapp

Créera un dossier contenant l’application Symfony, qu’on pourra ouvrir dans son éditeur favori.

Lancer le serveur

Utiliser l’outil Symfony CLI :

symfony serve --no-tls

Lance le serveur, par défaut sur le port 8000. On peut alors accéder à l’application via le navigateur : http://localhost:8000

Créer une page (contrôleur)

Deux possibilités :

  • Utiliser le MakerBundle et sa commande php bin/console make:controller pour créer une classe de contrôleurs
  • Dans une classe de contrôleurs déjà existante, créer une nouvelle méthode qui deviendra un contrôleur avec un attribut Route

Configurer une route (page)

Sur une méthode au sein d’une classe de contrôleurs, ajouter l’attribut Route :

#[Route('/mon-url', name: 'le_nom_de_la_route')]
public function monControleur(): Response
{}

Éditer un template Twig

Twig est un moteur de template. Tous les templates se trouvent dans templates/.

On construit donc l’apparence de nos pages dans les templates (layout du site).

Généralement, on aura un template “racine” dans templates/base.html.twig

Installer Bootstrap/Tailwind

  • Bootstrap : on peut utiliser une commande de la console :
php bin/console importmap:require bootstrap
composer require symfonycasts/tailwind-bundle

Configurer l’accès à la BDD

Toujours dans le fichier .env.local, définir une variable d’environnement DATABASE_URL.

Créer la BDD

php bin/console doctrine:database:create

Créer une table (entité)

On utilisera le MakerBundle et sa commande :

php bin/console make:entity

Créer une migration

Une fois de plus, une commande du MakerBundle :

php bin/console make:migration

Exécuter une migration

php bin/console d:m:m

Installer le composant de fixtures

composer require --dev orm-fixtures
  • orm-fixtures est un alias Symfony Flex
  • Lors de l’installation de ce composant, une recette (recipe) Symfony Flex est automatiquement exécutée pour pré-configurer le composant : une classe PHP est créée dans src/DataFixtures

Éditer des fixtures

Les fixtures se trouvent dans la classe App\DataFixtures\AppFixtures, donc si on suit la logique PSR-4, on trouvera les fixtures dans le fichier src/DataFixtures/AppFixtures.php.

Il faudra écrire ses fixtures dans la méthode load.

Exécuter des fixtures

Une fois les fixtures écrites, on pourra charger les données en BDD avec la commande :

php bin/console d:f:l

Créer une relation entre deux entités

On pourra repasser par le MakerBundle, et créer une propriété désignant l’entité cible.

Exemple :

  • J’édite l’entité Article
  • Je veux faire un lien vers Category, afin qu’un article ait une catégorie
  • Je vais donc créer une propriété category
  • Le type de cette propriété sera ManyToOne

Concernant le type, séparer les différents types de relations par rapport au mot-clé To :

  • Many / To / One
  • One / To / Many
  • etc…

Ensuite, on prend l’entité qu’on est en train d’éditer (ou bien celle dans laquelle on se trouve), et on l’insère à gauche du To. Exemple :

  • Many Articles / To / One

Pour finir, on insère l’entité cible à droite du To :

  • Many Articles / To / One Category