UniqueEntity约束

时间:2013-07-26 09:24:44

标签: symfony unique-constraint symfony-2.3

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

 $builder->add('email', 'email', array(
                    'required' => true,
                    'constraints' => array(
                        new NotBlank(), new Email(), new UniqueEntity(array('fields' => array('email')))
                    )
                )
            )

但我收到以下错误:

  

警告:get_class()期望参数1为object,字符串为   供应商/ symfony中/ symfony中/ src目录/ Symfony的/桥梁/教义/识别/约束/ UniqueEntityValidator.php   第66行

我做错了什么?

3 个答案:

答案 0 :(得分:3)

它失败了,因为需要对实体应用UniqueEntity而不是单个字段。称为类约束。您最好的选择是使用validation.yml,如:http://symfony.com/doc/current/reference/constraints/UniqueEntity.html

中所述

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:0)

FormType类中的SF3 +

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

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

}

所有功劳归塞拉德所有。