Symfony 单数约束

Symfony 单数约束,symfony,unique-constraint,symfony-2.3,Symfony,Unique Constraint,Symfony 2.3,我想验证用户实体的唯一性。我是这样做的: $builder->add('email', 'email', array( 'required' => true, 'constraints' => array( new NotBlank(), new Email(), new UniqueEntity(array('fields' => array

我想验证用户实体的唯一性。我是这样做的:

 $builder->add('email', 'email', array(
                    'required' => true,
                    'constraints' => array(
                        new NotBlank(), new Email(), new UniqueEntity(array('fields' => array('email')))
                    )
                )
            )
但我得到了以下错误:

警告:get_class()要求参数1为对象,字符串为 供应商/symfony/symfony/src/symfony/Bridge/Doctrine/Validator/Constraints/uniquentityvalidator.php 第66行


我做错了什么?

我在我的对象类中使用以下代码来处理站点名称的唯一性,也许你可以试试

@UniqueEntity(
    fields={"name"},
    errorPath="name",
    message="This name is already in use, please chose another one."
)

它之所以失败,是因为需要对实体而不是单个字段应用Uniquentity。称为类约束。您最好使用validation.yml,如中所述:

但是,应该可以使用setDefaultOptions应用它:

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'constraints'     => array(
            new UniqueEntity(array('fields' => array('email'))),

FormType类中的SF3+

public function configureOptions( OptionsResolver $resolver ): void {
    parent::configureOptions( $resolver );

    $resolver->setDefaults( array( 
        'constraints' => array( new UniqueEntity( array( 'fields' => array( 'email' ) ) ) ) 
    ) );

}

所有的积分都归Cerad所有。

您是否设置了数据类属性?