web-dev-qa-db-ja.com

FOSUserBundleで新しいユーザーを作成すると失敗する

コマンドラインから新しいユーザーを作成しようとすると、次のエラーが発生します。

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

Webインターフェースで登録してユーザーを作成しようとすると、次のようになります。

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

既存のユーザーでのログインは機能します。また、プロファイルの更新とパスワードの変更。新しいユーザーを作成するだけでは機能しません。

非常に単純な設定でv 1.3.1を使用していますが、まだ解決策を見つけていません。

何か案は?

47
sprain

修繕!

Userエンティティにカスタムコンストラクターメソッドがありました。そこで、親のコンストラクタをparent::__construct();で呼び出すのを忘れていました

144
sprain

多分それは誰かを助ける。 bcryptエンコーダーを使用すると、このエラーが表示されます。

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

この問題を解決するには、ユーザークラスにソルト属性のマッピングオーバーライドを追加するだけです(ヌル可能にします)。

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 {
     ...
}

OR:スキーマの更新を忘れないでください。 composer update!の後でエラーが発生した場合!

bin/console doctrine:schema:update --force