我使用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]: Integrity constraint violation: 1062'test' for key 'UNIQ_957A647992FC23A8'
我更喜欢错误信息。我尝试:Symfony 2 -设置UniqueEntity消息
实际上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")