我使用FOS,我构建了自己的表单来创建用户。检测重复的用户名和电子邮件时遇到问题。
use Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity;
/**
* @ORM\Entity
* @ORM\Table(name="fos_user")
@UniqueEntity(
* fields={"email"},
* message="Your E-Mail adress has already been registered"
* )
*/
class User extends BaseUser
{
/**
* @ORM\Id
* @ORM\Column(type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
public function __construct()
{
parent::__construct();
// your own logic
}
}
没什么。我明白了:
SQLSTATE [23000]:完整性约束违规:1062重复条目 '测试'关键字' UNIQ_957A647992FC23A8'
我更喜欢错误消息。我试着:Symfony 2 - Set UniqueEntity message
答案 0 :(得分:0)
实际上,FOS模型用户已经对用户名和电子邮件拥有唯一的实体约束。请确保您的表单的validation_groups设置为“Registration”或“Profile”。
/**
* @param OptionsResolverInterface $resolver
*/
public function setDefaultOptions(OptionsResolverInterface $resolver)
{
$resolver->setDefaults(array(
'data_class' => 'AppBundle\Entity\User',
'validation_groups' => array('Registration', 'Default'),
));
}
或者您可以使用“emailCanonical”字段设置自己的唯一约束。
* @UniqueEntity(fields="emailCanonical", errorPath="email", message="Your E-Mail adress has already been registered")