被作爲權標,現在(2014年10月14日),答案是不正確的答案的。
這是唯一正確的解決方案:
namespace XXX\UserBundle\Entity;
use FOS\UserBundle\Model\User as BaseUser;
use Doctrine\ORM\Mapping as ORM;
use Doctrine\Common\Collections\Collection;
use Doctrine\Common\Collections\ArrayCollection;
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity
* @ORM\Table(name="User_User")
* @ORM\Entity(repositoryClass="UserRepository")
* @UniqueEntity(fields="usernameCanonical", errorPath="username", message="fos_user.username.already_used")
* @ORM\AttributeOverrides({
* @ORM\AttributeOverride(name="email", [email protected]\Column(type="string", name="email", length=255, unique=false, nullable=true)),
* @ORM\AttributeOverride(name="emailCanonical", [email protected]\Column(type="string", name="email_canonical", length=255, unique=false, nullable=true))
* })
*/
class User extends BaseUser
{
...
}
而且你需要重寫確認團組的用戶表單:
# app/config/config.yml
...
fos_user:
profile:
form:
validation_groups: [Default] # Here you can also add your own groups if you have extra validation
registration:
form:
validation_groups: [Default] # Here you can also add your own groups if you have extra validation
我們做了什麼?我們只是覆蓋驗證組,使其與FOS默認驗證不匹配。相反,您的表單將僅通過Default
組驗證。上面描述的驗證UniqueEntity
表示沒有任何組將與Default
組匹配。
來源
2013-06-12 07:28:11
Tim
一個更好的解決方案是蒂姆的答案 – Arno 2017-07-31 14:25:46
感謝@Arno - 在寫這篇文章時(〜2011),這個答案由於@ORM \ AttributeOverride不存在,所以是正確的。現在遇到這個問題的任何人現在都應該查看下面的[@ Tim's answer](https://stackoverflow.com/a/17059918/3765)。 – leek 2017-08-17 21:51:36