====== Fixtures ====== ===== Prérequis ===== ''symfony composer req orm-fixtures --dev'' Cette commande, entre autre : * crée un répertoire : ''/src/DataFixtures'' * Crée un fichier ''AppFixtures.php'' dans le répertoire ci-dessus. Si on utilise Faker pour générer des données aléatoires, il faut l'installer aussi :\\ ''symfony composer req fzaninotto/faker --dev'' ===== Faker ===== Pour voir les differents formats généré par Faker, rdv ici -> [[https://fakerphp.github.io/formatters/numbers-and-strings/]] ===== AppFixtures.php ===== setNum($faker->randomNumber(4,false)); $ticket->setMail($faker->email()); $ticket->setDate($faker->dateTimeBetween('-1 week', '+4 week')); $ticket->setIp($faker->ipv4()); $manager->persist($ticket); } $manager->flush(); } } ===== Application des fixtures ===== ''symfony console doctrine:fixtures:load'' ===== Cas particuliers ===== ==== Créer un mot de passe d'utilisateur ==== Il faut hasher le mot de passe avant de le stocker avec ''$user->setPassword'' Dans l'exemple ci dessous : - Nouvelle clause use :''use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface;'' - Modification/Ajout de la function ''construct'' pour injecter ''userPasswordHasherInterface'' - Hashage du mot de passe avec ''$this->userPasswordHasherInterface->hashPassword($user,'password');'' use App\Entity\User; use Doctrine\Persistence\ObjectManager; use Doctrine\Bundle\FixturesBundle\Fixture; use Symfony\Component\PasswordHasher\Hasher\UserPasswordHasherInterface; class AppFixtures extends Fixture { private $userPasswordHasherInterface; public function __construct (UserPasswordHasherInterface $userPasswordHasherInterface) { $this->userPasswordHasherInterface = $userPasswordHasherInterface; } public function load(ObjectManager $manager): void { $user = new User; $user->setEmail('test@test.com'); $hashedPassword = $this->userPasswordHasherInterface->hashPassword($user,'password'); $user->setPassword($hashedPassword); $manager->persist($user); $manager->flush(); } } ====== Sources & Ressources ======