La idea es validar primero si todos los campos obligatorios no están en blanco. Si se proporcionan todos los datos necesarios, valide si los valores introducidos son correctos. El caso habitual de la secuencia de grupos. Sin embargo, cuando aplico new GroupSequence(["Basic", "Strict"])
a la opción validation_groups
, resulta que el formulario es válido incluso si todos los campos están en blanco. Si el valor de validation_groups
se establece en ["Basic", "Strict"]
el formulario se valida correctamente pero con todas las restricciones, y eso no es lo que quiero. ¿Qué estoy haciendo mal?
Aquí está mi código:
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"]) ]); } }
¿Qué estoy haciendo mal?
Este es un error conocido de la versión 2.8 de Symfony y se corrigió en las versiones más nuevas.
Pero tampoco vi ninguna documentación que muestre que puede usar un GroupSequence
cuando configure la opción validation_groups
.
Asumiría que al usar Symfony 2.8, un validador personalizado que se encargue de toda la validación es la mejor opción para manejar tal situación.