Bonjour tous le monde,

j'ai beau chercher, je ne trouve pas comment rendre l'email non obligatoire.

Quelqu'un a une solution ?

Merci d'avance pour l'aide.

Cordialement.

4 réponses


Dans le dossier : vendor\friendsofsymfony\user-bundle\Command, fichier CreateUserCommand.php
Remplace new InputArgument('email', InputArgument::REQUIRED, 'The email') par
new InputArgument('email', InputArgument::VALUE_NONE, 'The email'),

Je n'ai pas testé mais ça devrait fonctionner, au niveau de la bdd, rend le champs nullable

Cela ne fonctionne pas

PHP Fatal error:  Undefined class constant 'VALUE_NONE' in /Users/deshiloh/Sites/lacapa/vendor/friendsofsymfony/user-bundle/Command/CreateUserCommand.php on line 38

et avec InputArgument::OPTIONAL

PHP Fatal error:  Uncaught exception 'Symfony\Component\Console\Exception\LogicException' with message 'Cannot add a required argument after an optional one.'

En plus je viens de voir qu'il s'agit de la partie pour créer un utilisateur en ligne de commande, ce n'est pas ce que je cherche à faire.

L'email est obligatoire avec FOS car tu l'utilises pour la connexion de l'utilisateur a moins que tu te sers d'un autre champ pour log l'utilisateur ?

Dans ce cas, dans ton fichier security.yml il faut changer la manière de se log

 providers:
        fos_userbundle:
            id: fos_user.user_provider.email

Ca c'est normalement ton code, il faut le remplacer par ton autre champ le username par exemple :

 providers:
        fos_userbundle:
            id: fos_user.user_provider.username

Si ce n'est toujours pas bon, vérifie si tu as bien overide ton formulaire de création user FOS et si tu ne l'as pas fait, réécrit le et veille à désactiver le champ

'required' => true

de ton adresse mail.

Maxime