====== 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 ======