J'ai Je veux créer un nouvel utilisateur mais sans courrier électronique. Mais dans ma classe d'utilisateur, l'email est unique et ne peut pas être null. P>
Cela signifie que je dois créer une nouvelle classe d'utilisateur nommée transuser. P>
Maintenant, je veux être capable d'avoir ceci comme une classe qui est identique à celle de l'application \ entité \ Classe d'utilisateur, mais sans la colonne électronique ou au moins avec une colonne de messagerie qui n'est pas unique et peut être null. < / p>
Quelle est la meilleure façon de le faire en PHP avec symfony? p> app \ entité \ user code> classe. p>
3 Réponses :
Vous pouvez avoir des cours pour les utilisateurs autant que vous le souhaitez, il vous suffit de définir ces nouvelles classes en tant que fournisseur d'utilisateurs de votre section Security.YAML dans les fournisseurs, par exemple, vous pouvez avoir des utilisateurs à côté des utilisateurs réguliers. Voici comment votre section de fournisseur de Security.YAML ressemble à et ainsi de suite, vous pouvez en trouver plus sur celui-ci ici .
Vous devez mettre à jour les pièces de pare-feu si vous souhaitez limiter le type d'utilisateurs atteignant certains itinéraires et ajouter la clé de fournisseur pour Acheach Firewall, quelque chose comme celui-ci p> vous pouvez en trouver < un href = "https://symfony.com/doc/4.0/security/multiple_user_providers.html" rel = "nOfollow noreferrer"> ici p> p>
HM, je pense que pour mon projet, je n'en ai pas besoin de cela - car aucun de mes utilisateurs sans courrier électronique ne sera jamais connecté. Mais merci pour l'effort.
/**
* @ORM\Entity
* @ORM\Table(name="user2")
*
* @ORM\AttributeOverrides({
* @ORM\AttributeOverride(name="email",
* column=@ORM\Column(
* name = "email",
* type = "string",
* nullable = true
* )
* ),
* @ORM\AttributeOverride(name="emailCanonical",
* column=@ORM\Column(
* name = "email_canonical",
* type = "string",
* nullable = true
* )
* )
* })
*
*/
class User2 extends User
{
}
C'est aussi une bonne réponse et je suis curieux de savoir si cela pourrait résoudre mon problème. Mais je colle avec la solution de Jakumi. De cette façon, je n'ai pas du tout de créer une nouvelle classe d'utilisateurs. Mais merci de votre temps!
Vous pouvez modifier votre classe code> utilisateur code> pour permettre aux adresses e-mail null. ( Toutefois, sur l'enregistrement / validation / connexion, vous devez finalement distinguer les différents types d'utilisateurs. p>
Cette solution est des extensions quelque peu de classe (ou héritage de table unique). Mais quelque part, vous aurez probablement une colonne quasi discriminator. ; o) p>
Évidemment, l'avantage est que vous pouvez avoir une seule table utilisateur, ce qui facilite toutes les clés de référencement / étranger. P> unique code> le permet toujours). P>
Créez de faux courriels et définissez un email à ce faux email sur
réparateur code> par exemple.Unique ne signifie généralement pas que cela ne peut pas être nul ... ou plusieurs NULLS pour plusieurs rangées (appris que la voie difficile ^^). Donc, autorisez simplement les nulls ... et pour vos validateurs ... il suffit probablement de déterminer, mais de valider le courrier électronique, quand c'est un utilisateur normal.
Avez-vous essayé d'utiliser FosuserBundle? Cela rendra votre travail plus rapide et plus sûr
@ A.Marwan - J'ai construit mon propre système de sécurité - pour moi FosuserBundle n'était pas assez flexible.
@Jakumi - Vous avez résolu le deuxième problème pour moi ce jour-là: d. PLZ Ecrivez la solution sous forme de réponse - je vais vérifier et la marquer comme solution pour mon problème. Merci!
@Slowwie fait. ; o)