web-dev-qa-db-fra.com

La création d'un nouvel utilisateur avec FOSUserBundle échoue

J'essaie de créer un nouvel utilisateur à partir de la ligne de commande et d'obtenir cette erreur:

Warning: array_search() expects parameter 2 to be array, null given
in /vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Model/User.php line 368  

Lorsque vous essayez de créer un utilisateur en vous inscrivant sur l'interface Web, j'obtiens ceci:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'salt' cannot be null

La connexion avec un utilisateur déjà existant fonctionne. Mettre également à jour un profil et changer le mot de passe. La création de nouveaux utilisateurs ne fonctionne pas.

J'utilise v 1.3.1 dans une configuration très simple et je n'ai pas encore trouvé de solution.

Des idées?

47
sprain

Fixé!

J'avais une méthode de constructeur personnalisée dans mon entité utilisateur. Là, j'avais oublié d'appeler le constructeur du parent avec parent::__construct();

144
sprain

Peut-être que cela aide quelqu'un. Vous pouvez voir cette erreur lorsque vous utilisez l'encodeur bcrypt.

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'salt' cannot be null

Pour résoudre ce problème, ajoutez simplement le remplacement de mappage pour l'attribut salt dans votre classe User (rendez-le nul)

use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity
 * @ORM\AttributeOverrides({
 *  @ORM\AttributeOverride(
 *      name="salt",
 *      column=@ORM\Column(name="salt", type="string", nullable=true)
 *      )
 *  })
 */
class User extends BaseUser {
     ...
}

OU: n'oubliez pas de mettre à jour votre schéma. Si une erreur s'est produite après la mise à jour composer!

bin/console doctrine:schema:update --force