User エンティティでメールを不要に設定したいと思います。どうやって何を?FOSUserBundle/config/ を検索しましたが、メールに関する「必須」パラメーターが見つかりません。
3 に答える
Tibの答えに続いて、これが私がやった方法です。それは正常に動作しています:
/**
* User
*
* @ORM\Table(name="user")
* @ORM\Entity
* @ORM\AttributeOverrides({
* @ORM\AttributeOverride(name="email", column=@ORM\Column(type="string", name="email", length=255, unique=false, nullable=true)),
* @ORM\AttributeOverride(name="emailCanonical", column=@ORM\Column(type="string", name="email_canonical", length=255, unique=false, nullable=true))
* })
*/
class User extends BaseUser {
// ...
}
編集 :
以前のソリューションは実装が簡単で、問題なく動作していましたが、Symfony をバージョン 2.1.8 に更新した後、アプリで何も変更せずに、エンティティの生成に失敗し、Doctrine マッピング例外 (無効なフィールド オーバーライド ...) がスローされました。
その問題を解決しようとして多くの時間を失ったにもかかわらず、私は立ち往生していました。
その後、FOSUserBundle には、私が使用していない多くの機能が備わっていることに気付きました。
アプリのユーザー管理は「ソフトウェアのようなもの」であるため、メール要件を無効にする必要があります。登録なし、メール送信なし、プロファイルなし、管理者のみが管理するユーザーとロールなど...
自分のニーズに合わせて設計されていないツールを適応させていました。そこで、Symfony セキュリティの独自の実装を作成することにしました。
少し手間がかかりますが、それほど難しくはなく、結果は FOSUserBundle を適用するよりもはるかに優れており、より柔軟です。もちろん、「古典的な」Web サイトまたは Web アプリの場合は、FOSUserBundle が最適です。
あなたもこのケースに当てはまる場合は、そうすることをお勧めします。開始するドキュメントは次のとおりです: Security in the BookおよびSecurity in the CookBook
これがお役に立てば幸いです。
下手な英語で申し訳ありませんが、理解できることを願っています
この PR https://github.com/doctrine/orm-documentation/pull/117/filesを確認し、@AttributeOverrides を見てください。
エンティティ User で次のメソッドをオーバーライドする必要があります。
class User extends BaseUser // inheritance from fos
{
/**
* @var string
* @ORM\column(type="string", name="email", length=255, unique=true, )
* @Assert\Email(
* checkMX = true
* )*/
protected $email
}
}
テーブル定義を次のように変更する必要があります。
class User extends BaseUser // inheritance from fosUserBundle
{
/**
* @var string
* @ORM\column(type="string", name="email", length=255, unique=false, nullable=true )
*/
protected $email
}
}
emailCanonical 属性にも同じことが必要です。
それが合格しない場合。モデル全体を FOS からバンドルにコピーしてから、私が書いたように変更する必要があります。
ドキュメントを確認してください: https://github.com/FriendsOfSymfony/FOSUserBundle/blob/1.2.0/Resources/doc/doctrine.md
よろしくマックス