Skip to content
This repository has been archived by the owner on Sep 15, 2022. It is now read-only.

Latest commit

 

History

History
67 lines (52 loc) · 2.35 KB

10-Fixture.md

File metadata and controls

67 lines (52 loc) · 2.35 KB

Fixtures

Pour permettre à un nouveau développeur d'intégrer le projet vite et de lui permettre d'avoir des données de test nous allons utiliser un bundle qui est doctrine-fixtures-bundle.

Il va permettre de définir un jeu de donnée initiale

# composer require --dev doctrine/doctrine-fixtures-bundle

Une fois installé nous allons l'initialisé avec make

# php bin/console make:fixtures

Nous l'appelerons AppFixtures dedans nous allons mettre des données par defaut

    public function load(ObjectManager $manager)
    {
        $user = new User();
        $user->setEmail('[email protected]');
        $user->setPassword('password');
        $user->setRoles(['ROLE_USER'])
        $user->setName('John Doe');
        $user->setUsername('john doe');
        $manager->persist($user);

        $article = new Article();
        $article->setTitle('test');
        $article->setUser($user);
        $article->setContent('Proinde die funestis interrogationibus praestituto imaginarius iudex equitum resedit magister adhibitis aliis iam quae essent agenda praedoctis, et adsistebant hinc inde notarii, quid quaesitum esset, quidve responsum, cursim ad Caesarem perferentes, cuius imperio truci, stimulis reginae exsertantis aurem subinde per aulaeum, nec diluere obiecta permissi nec defensi periere conplures.');
        $manager->persist($article);
        $manager->flush();
    }

Nous utilisons l'objectManager, qui va nous servir à faire la liaison de l'object avec la base, nous y reviendrons plus en details sur le chapitres suivants. Une fois notre fichier rempli nous allons charger ces données en base.

~> php bin/console doctrine:fixtures:load

Nous pouvons voir que notre base est remplie.

De ce fait il faudrait rajouter quelque chose dans notre AppFixtures, le password.

Pour encoder le password nous aurons besoin d'injecter UserPasswordEncoderInterface puis d'utiliser encodePassword

Cela nous donnera:

	public function __construct(UserPasswordEncoderInterface $encoder)
    {
        $this->encoder = $encoder;
    }

    public function load(ObjectManager $manager)
    {
        $user = new User();
        $user->setEmail('[email protected]');
        $password = $this->encoder->encodePassword($user, 'test');
        $user->setPassword($password);
        $user->setName('John Doe');
        $manager->persist($user);