Ceci est une ancienne révision du document !
symfony console make:user
Fichiers créés :
src/Entity/User.php |
src/Repository/UserRepository.php |
Ajout des propriétés :
Nom | Type | Longueur | Nullable |
---|---|---|---|
string | 255 | Non | |
username | string | 255 | Non |
roles | simple_array | Non | |
password | string | 255 | Non |
Ensuite pour ajouter d'autres champs à l'entité, il suffit de refaire la commande
symfony console make:entity
sur l'entité User et ajouter les champs supplémentaires.
à vérifier
J'ai utilisé le type simple_array
plutôt que le type json
car sur mon serveur MariaDB le type de champ json
n'était
pas encore supporté, alors qu'en MySQL il existe depuis longtemps…
Le champ dans la DB est du type longtext et son contenu doit être
constitué de chaînes séparées par des virgules, par exemple ROLE_USER,ROLE_ADMIN
.
Créer une migration :
php bin/console make:migration
Appliquer la migration :
php bin/console doctrine:migrations:migrate
AVANT D'APPLIQUER CETTE FIXTURE, IL FAUT D'ABORD AVOIR CONFIGURÉ L'ENCODAGE DES MOTS DE PASSE !!!
<?php namespace App\DataFixtures; use App\Entity\User; use Doctrine\Bundle\FixturesBundle\Fixture; use Doctrine\Common\Persistence\ObjectManager; use Symfony\Component\Security\Core\Encoder\UserPasswordEncoderInterface; class UserFixtures extends Fixture { private $encoder; public function __construct(UserPasswordEncoderInterface $encoder) { $this->encoder = $encoder; } public function load(ObjectManager $manager) { $user = new User(); $user->setUserName('Bubule'); $user->setEmail('bubule@mail.com'); $user->setPassword($this->encoder->encodePassword($user, 'testtest')); $user->setRoles(['ROLE_USER', 'ROLE_ADMIN']); $manager->persist($user); $manager->flush(); } }
Pour rappel, appliquer les fixtures se fait par cette commande :
php bin/console doctrine:fixtures:load