2

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

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

但我收到以下错误:

警告:get_class() 期望参数 1 是对象,在 vendor/symfony/symfony/src/Symfony/Bridge/Doctrine/Validator/Constraints/UniqueEntityValidator.php 第 66 行中给出的字符串

我究竟做错了什么?

4

3 回答 3

7

它失败了,因为 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'))),
于 2013-07-26T14:45:43.063 回答
1

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

@UniqueEntity(
    fields={"name"},
    errorPath="name",
    message="This name is already in use, please chose another one."
)
于 2013-07-26T14:15:47.017 回答
0

FormType 类中的 SF3+

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

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

}

所有的功劳都归于 Cerad。

于 2018-07-18T08:13:27.990 回答