Php 形式上的唯一性
我使用FOS并构建了自己的表单来创建用户。我发现重复用户名和电子邮件有问题Php 形式上的唯一性,php,symfony,fosuserbundle,Php,Symfony,Fosuserbundle,我使用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 reg
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”的“测试”
我更喜欢错误信息。我尝试:实际上FOS模型用户已经对用户名和电子邮件具有唯一的实体约束。请确保表单的验证组设置为“注册”或“配置文件”
/**
* @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")
我也试过了。但我使用了:配置选项。使用setDefaultOptions不起作用。也许表单没有看到验证组?在我的buildForm中是addEventListenerFormEvents::POST_BIND它有什么关系吗?我为symfony 2.7.4工作。请尝试在确认中设置FOS注册表验证组。yml:FOS\u用户:注册:表单:类型:验证\u组:[注册,默认值]确认。yml?也许是config.yml它是什么?给我的表格起名?如果是,则不起作用是的,config.yml是正确的。您应该将表单注册为服务,并将服务名称放入。尝试将“cascade\u validation”=>true添加到嵌入表单类型的setDefaultOptions方法中的setDefaults。