Bonjour,
je suis sur un projet depuis un mois et tout à coup, on me demande :
c'est possible d'avoir des login identiques... sur tel ou tel site ils le font.
j'ai lu un peu à ce sujet et apparemment c'est quelque chose de demandé sur Symfony depuis longtemps.
Avez-vous des pistes à me fournir , par hasard ?
Merci de votre aide !
bonjour Alain Ouakbar Tabba Sardinaluile
ci dessous un petit bout de code juste pour s'inspirer et à adapter à vos besoins;
Vous utilisez l'AttributeOverride de Doctrine.
namespace XXX\UserBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;
use Doctrine\ORM\Mapping\AttributeOverrides;
use Doctrine\ORM\Mapping\AttributeOverride;
/**
Puis dans votre fichier de configuration
app/config/config.yml...
fos_user:
profile:
form:
validation_groups: [Default] # Default seulement
registration:
form:
validation_groups: [Default] # Default seulement
Mais il faut faire attention (je pense) quant à la validation de l'adresse email (à valider manuellement).
Bonne continuation à vous!
Bonjour Clem21s
Merci beaucoup pour votre message.
Je vais l'étudier.
En attendant, j'ai trouvé une solution en fouillant un peu :
Bonjour merci pour votre message.
En fait j'ai trouvé une solution avec fosuserbundle.
Ca marche très bien.
Il faut surcharger le RegistrationFormType pour supprimer le user name.
parent::buildForm($builder, $options);
//supprime le username du register
$builder
->remove('username')
;
Il faut créer un nouveau champs par exemple loginmonsite dans l'entité user, mettre ce nouveau champs dans le twig de registration.
{{ form_label(form.loginmonsite, "Nom d'utilisateur", { 'label_attr': {'class': 'labelConnexion text-center'} }) }}
{{ form_widget(form.loginmonsite, {'attr': {'class': 'inputConnexion', 'required' : 'true'}}) }}
{{ form_errors(form.loginmonsite) }}
à l'enregistrement d'un nouvel user il faut mettre l'email dans le username (setemail dans user.php) : ce qui fait que maintenant colonne username et colonne email sont identiques.
public function setEmail($email){
parent::setEmail($email);
$this->setUsername($email);
}
ca marche très bien.
il faut bien entendu pour se logguer avec l'email :
pour ma part, c'était déjà paramétré
Voilà.