Ограничение UniqueEntity

Я хочу проверить сущность пользователя на уникальность. Я делаю это так:

 $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.

Что я делаю неправильно?


person Alex Petrov    schedule 26.07.2013    source источник
comment
Вы установили атрибут data_class?   -  person Flow    schedule 26.07.2013


Ответы (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'))),
person Cerad    schedule 26.07.2013

Я использую следующий код в своем классе объектов, чтобы обрабатывать уникальность имени сайта, возможно, вы могли бы попробовать.

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

SF3+ внутри вашего класса FormType

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

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

}

Вся заслуга принадлежит Кераду.

person Kaizoku Gambare    schedule 18.07.2018