Sommaire

Les Fixturesfixtures

Les fixtures vont nous permettre de remplir notre table produit grâce à une commande sur le terminal. Cela dit, tout ce que nous allons coder dans la fixture peut très bien être placé dans l’action d’un contrôleur.

Le seul avantage des fixtures est cette commande sur le terminal qui permet d’exécuter toutes les fixtures existantes d’un seul coup.

Pour utiliser les fixtures, il faut installer un package supplémentaire. Si vous vous rendez sur Symfony Recipes Server : https://flex.symfony.com et que vous recherchez fixture, vous trouverez ce package : doctrine/doctrine-fixtures-bundle.

On voit qu’on peut utiliser l’alias : orm-fixtures.

Nous allons donc exécuter sur le terminal :

composer require --dev orm-fixtures

La commande a créé un dossier src/DataFixtures et, à l’intérieur, un fichier exemple AppFixtures.php.

Toutes les fixtures héritent de la classe Fixture du FixtureBundle, qui est une classe abstraite (voir chapitre Le langage Objet, section Les classes abstraites et les interfaces - Les classes abstraites). La méthode load() de la classe Fixture est aussi abstraite, il faudra donc la redéfinir dans toutes les fixtures. 

C’est cette méthode qui sera exécutée automatiquement lorsqu’on lancera les fixtures.

Nous allons créer une Fixture propre à notre entité Produit.

Créez, dans src/DataFixtures, un fichier ProduitFixtures.php ...