Préremplir votre base de données avec des données fictifs peut s’avérer très utile pour les tests, mais aussi pour aider les nouveaux membres de l’équipe à se familiariser avec l’environnement.
Dans ce tutoriel, nous allons créer plusieurs comptes utilisateur avec des mots de passe Hautelook Alice bundle. Ainsi, vous aurez un début pour comprendre ce bundle.
Les étapes détaillées ci-dessous incluent les commandes nécessaires et des captures d’écran afin de faciliter la compréhension.
Prérequis
Tout d’abord, assurez-vous d’avoir :
- Symfony installé et configuré.
- Une base de données connectée à votre projet Symfony.
Étape 1 : Créer l’Entité User
D’abord, Créons une entité utilisateur dans Symfony pour gérer les données.
php bin/console make:user
Ensuite Confirmez toutes les options proposées jusqu’à la fin de la création de l’entité. Ensuite, nous allons ajouter des champs pour le prénom (firstName
) et le nom (lastName
).
php bin/console make:entity User
Puisque l’entité User
existe déjà, cette commande permet d’ajouter de nouvelles propriétés.
php bin/console make:migration
Si la base de données est correctement configurée, la migration se déroulera avec succès. Sinon, vérifiez la configuration de la connexion dans .env
php bin/console doctrine:migrations:migrate
Et Enfin, Vérifiez dans votre outil de gestion de base de données que la table User
est bien créée.

Étape 2 : Installer Alice Bundle pour les Fixtures
Premièrement: pour générer les données, nous utiliserons Alice Bundle. Suivez aussi la documentation officielle pour l’installation : Alice Bundle Documentation.
composer require --dev hautelook/alice-bundle
Ensuite, Un dossier /fixtures est créé.
Créer le fichier User.yaml
Ensuite, Dans le dossier /fixtures, créez un fichier User.yaml
avec le contenu suivant pour générer des utilisateurs de test.
App\\Entity\\User:
user_{3..10}:
email: <email()>
firstName: <firstName()>
lastName: <lastName()>
password: "test"
user_1:
email: '[email protected]'
password: "test"
user_2:
email: '[email protected]'
password: "test"
- Le mot de passe est ici en clair pour l’instant, nous verrons plus loin comment le hacher correctement.
- Les noms de clés doivent correspondre aux properties de l’entité.
- La notation
user_{3..10}
crée des utilisateurs deuser_3
àuser_10
.
email: <email()>
- Et enfin, utilisez cette syntaxe pour générer des adresses e-mail aléatoires.
Charger les Fixtures
Et enfin, Pour charger ces données dans la base de données, utilisez la commande suivante :
php bin/console hautelook:fixtures:load

Étape 3 : Hachage des Mots de Passe avec Provider de Hautelook Alice
Puisque nous allons hacher les mots de passe dans les fixtures. Créons un provider pour cela.
Créer le Fichier HashPasswordProvider.php
D’abord, dans src/DataFixtures/Providers/
, créez le fichier HashPasswordProvider.php
avec le code suivant :
php
Copier le code
<?php
namespace App\\DataFixtures\\Providers;
use App\\Entity\\User;
use Symfony\\Component\\PasswordHasher\\Hasher\\UserPasswordHasherInterface;
class HashPasswordProvider
{
private $encoder;
public function __construct(UserPasswordHasherInterface $encoder)
{
$this->encoder = $encoder;
}
public function hashPassword(string $plainPassword): string
{
return $this->encoder->hashPassword(new User(), $plainPassword);
}
}
On fait juste appel à l’interface UserPasswordHasherInterface de Symfony afin de haché un mot de passe.
Configurer le Service dans services.yaml
Ensuite, ajoutez ce provider dans config/services.yaml
.
Afin de nous permettre d’utiliser le hashPassword() dans nos fichiers fixtures.
yaml
Copier le code
services:
App\\DataFixtures\\Providers\\HashPasswordProvider:
tags: [ { name: nelmio_alice.faker.provider } ]
Modifier les Fixtures pour Utiliser le Hachage
Puis, dans User.yaml
, remplacez le champ password
par :
yaml
Copier le code
App\\Entity\\User:
user_{3..10}:
email: <email()>
firstName: <firstName()>
lastName: <lastName()>
password: <hashPassword('test')>
user_1:
email: '[email protected]'
password: <hashPassword('test')>
user_2:
email: '[email protected]'
password: <hashPassword('test')>
Et enfin, pour terminer, Rechargez les fixtures avec la commande suivante :
php bin/console hautelook:fixtures:load

Evidemment, Vous pouvez facilement ajuster le nombre d’utilisateurs en modifiant la plage {3..10}
dans user_{3..10}
afin de générer plus d’utilisateurs.
Pour conclure, Hautelook Alice Bundle est un outil puissant qui permet de créer rapidement un grand nombre de données de test, avec des valeurs variées et adaptées à chaque besoin.
En effet, il nous donne déjà les fonctionnalités pour générer des données aléatoirement, on peut également, créer des fonctionnalités un peu plus custom.
Je suis Pascal Yu, je vous aide à développer vos solutions à l’aide de Symfony.
Prend un rendez vous gratuitement avec moi pour savoir comment je peux vous aider.