đź‘‹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


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.

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);
}

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