Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
prog:symfony:entities:fixtures [04/10/2022 16:41]
thierry [Prérequis]
prog:symfony:entities:fixtures [09/10/2022 17:24] (Version actuelle)
thierry [Créer un mot de passe d'utilisateur]
Ligne 11: Ligne 11:
  
 ===== Faker ===== ===== Faker =====
-  * Address +Pour voir les differents formats généré par Faker, rdv ici -> [[https://​fakerphp.github.io/​formatters/​numbers-and-strings/​]] 
-  * Barcode +===== AppFixtures.php ===== 
-  * Biased +<code php AppFixtures.php>​ 
-  * Color +<?php 
-  * Company + 
-  * DateTime +namespace App\DataFixtures;​ 
-  * File + 
-  * HtmlLorem +use Faker\Factory;​ 
-  * Image +use App\Entity\GTicket;​ 
-  * Internet +use Doctrine\Persistence\ObjectManager;​ 
-  * Lorem +use Doctrine\Bundle\FixturesBundle\Fixture;​ 
-  * Miscellaneous + 
-  * Payment +class AppFixtures extends Fixture 
-  * Person +{ 
-  * PhoneNumber +    const NB_TICKETS = 20000; 
-  ​* Text + 
-  ​* UserAgent +    public function load(ObjectManager $manager): void 
-  ​* Uuid+    { 
 +         
 +        $faker = Factory::​create('​fr_FR'​);​ 
 +        for ($i=0;​$i<​self::​NB_TICKETS;​$i++) 
 +        { 
 +            $ticket=new GTicket(null);​ 
 +            $ticket->​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();​ 
 +    } 
 +
 + 
 +</​code>​ 
 + 
 +===== 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'​);''​ 
 + 
 + 
 +<code php> 
 +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();​ 
 +    } 
 +
 + 
 +</​code>​ 
 + 
  
  
 ====== Sources & Ressources ====== ====== Sources & Ressources ======