Register form2 entity Symfony 6

Par tsaromino, il y a 2 ans


👋Bonjour à tous

J'essaye de créer un formulaire d'inscription avec 2 type User mais quand je m'inscrit en particulier la colonne Rôle ne se remplit pas en particulier.

User Particulier
User Agence

J'ai créer un UserTypeListener.php qui devrait fonctionner mais je ne voie pas le soucis...
Voila mon projet : https://github.com/xavgdt66/ImmoSymfony?fbclid=IwAR20d6i1LzedmVfZLCmmKlIx9DSrZFIz6AzExoswa7oUyS3s4cL2wTJWYS0

<?php namespace App\EventListener; use App\Entity\User; class UserTypeListener { public function prePersist(User $user): void { // Récupére le type user $userType = $user->getUserType(); // Si usert == particulier == role locataire if ($userType === 'particulier') { $roles = $user->getRoles(); $roles[] = "ROLE_LOCATAIRE"; $user->setRoles(array_unique($roles)); } } }

3 réponses

Grafikart, il y a 2 ans

Tu as un champs pour sauvegarder ça en base de données ? Sinon tu peux directement modifier le getter "getRoles" pour ajouter le ROLE_LOCATAIRE à la volée en fonction du type de l'utilisateur.

tsaromino, il y a 2 ans

Bonjour et merci de ta réponse.

Oui j'ai le form qui est fait graçe à UserType.php
Ensuite dans le registrationController.php il y la function register qui enregistre dans ma bdd.

Pour le get roles je l'ai modifer comme cela mais cela ne fonctionne pas :


public function getRoles(): array
{
$roles = $this->roles;

// Ajoutez le rôle "ROLE_LOCATAIRE" si l'utilisateur a ce rôle
if ($this->hasRole('ROLE_LOCATAIRE')) {
    $roles[] = 'ROLE_LOCATAIRE';
}

return array_unique($roles);

}

public function hasRole(string $role): bool
{
return in_array($role, $this->roles, true);
}


tsaromino, il y a 2 ans

C'est bon j'ai reussie , j'ai refait mon registrationController