使用FOSUserBundle创建新用户失败

spr*_*ain 47 symfony fosuserbundle

我试图从命令行创建一个新用户并收到此错误:

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

当试图通过webinterface注册来创建用户时,我得到了这个:

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'salt' cannot be null
Run Code Online (Sandbox Code Playgroud)

使用现有用户登录有效.还要更新配置文件并更改密码.只是创建新用户不起作用.

我在非常简单的设置中使用v 1.3.1并且还没有找到任何解决方案.

有任何想法吗?

spr*_*ain 144

固定!

我的User实体中有一个自定义构造函数方法.在那里,我忘了给父母的构造函数调用parent::__construct();


Ром*_*сов 6

也许它对某人有帮助.使用bcrypt编码器时可以看到此错误.

SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'salt' cannot be null
Run Code Online (Sandbox Code Playgroud)

要解决此问题,只需在User类中为salt属性添加映射覆盖(使其可为空)

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 {
     ...
}
Run Code Online (Sandbox Code Playgroud)

或者:不要忘记更新您的架构.如果作曲家更新后发生错误!

bin/console doctrine:schema:update --force
Run Code Online (Sandbox Code Playgroud)