Идея состоит в том, чтобы сначала проверить, если все обязательные поля не являются пустыми. Если предоставлены все необходимые данные, проверьте правильность введенных значений. Обычный случай для групповой последовательности. Как всегда, когда я применяю 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"])
]);
}
}
Это известный ошибка Symfony версии 2.8 и исправлены более новые версии.
Но я также не видел никакой документации, которая показывает, что вы можете использовать GroupSequence
когда настроить validation_groups
вариант.
Я предполагаю, что при использовании Symfony 2.8 пользовательский валидатор который берет на себя все проверки — лучший выбор в такой ситуации.
Других решений пока нет …