Как использовать групповую последовательность по типу формы в формах Symfony?

Идея состоит в том, чтобы сначала проверить, если все обязательные поля не являются пустыми. Если предоставлены все необходимые данные, проверьте правильность введенных значений. Обычный случай для групповой последовательности. Как всегда, когда я применяю new GroupSequence(["Basic", "Strict"]) к validation_groups Опция оказывается форма действительной, даже если все поля являются пустыми. Если validation_groups значение установлено в ["Basic", "Strict"] форма проверена правильно, но со всеми ограничениями, и это не то, что я хочу. Что я делаю неправильно?

Вот мой код:

class MyType extends AbstractType
{

    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
                ->add("name", null, [
                    "constraints" => new NotBlank(["groups" => ["Basic"]])
                ])
                ->add("phone", MyPhoneType::class, [
                    "constraints" => [
                        new NotBlank(["groups" => ["Basic"]]),
                        new PhoneNumber(["groups" => ["Strict"])
                    ]
                ])
                ->add("email", EmailType::class, [
                    "constraints" => [
                        new NotBlank(["groups" => ["Basic"]]),
                        new Email(["groups" => ["Strict"]]),
                    ],
                ])
            ;
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setDefaults([
            "validation_groups" => new GroupSequence(["Basic", "Strict"])
        ]);
    }
}

1 ответ

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

Это известная ошибка Symfony версии 2.8 и исправлена ​​в более новых версиях.

Но я также не видел никакой документации, которая показывает, что вы можете использовать GroupSequence когда настроить validation_groups вариант.

Я бы предположил, что при использовании Symfony 2.8 пользовательский валидатор, который берет на себя всю валидацию, является лучшим выбором для обработки такой ситуации.

Другие вопросы по тегам