From b9c5f6a2fd77130d02b5cc0d2a908047564a1bca Mon Sep 17 00:00:00 2001 From: Simon Vieille Date: Wed, 1 Oct 2025 16:30:27 +0200 Subject: [PATCH] fix(collection): always validate fields when another field is invalid" --- form/field.go | 10 ++++------ form/field_choice.go | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/form/field.go b/form/field.go index b4484df..f1558c2 100644 --- a/form/field.go +++ b/form/field.go @@ -21,13 +21,12 @@ import ( "slices" "strings" - "github.com/yassinebenaid/godump" "gitnet.fr/deblan/go-form/util" "gitnet.fr/deblan/go-form/validation" ) // Generic function for field.Validation -func FieldValidation(f *Field) bool { +func DefaultFieldValidation(f *Field) bool { if len(f.Children) > 0 { isValid := true @@ -39,10 +38,10 @@ func FieldValidation(f *Field) bool { c.Errors = errs } - isValid = isValid && isChildValid + isValid = isChildValid && isValid for _, sc := range c.Children { - isValid = isValid && FieldValidation(sc) + isValid = DefaultFieldValidation(sc) && isValid } } @@ -104,7 +103,7 @@ func NewField(name, widget string) *Field { NewOption("help_attr", Attrs{}), ) - f.Validate = FieldValidation + f.Validate = DefaultFieldValidation return f } @@ -367,7 +366,6 @@ func (f *Field) Bind(data map[string]any, key *string, parentIsSlice bool) error for _, key := range keys { for valueKey, value := range values { if valueKey == key { - godump.Dump([]string{valueKey, key}) nextData = append(nextData, value) } } diff --git a/form/field_choice.go b/form/field_choice.go index 70d2545..16c06fc 100644 --- a/form/field_choice.go +++ b/form/field_choice.go @@ -145,7 +145,7 @@ func NewFieldChoice(name string) *Field { ) f.Validate = func(field *Field) bool { - isValid := FieldValidation(field) + isValid := field.Validate(field) if len(validation.NewNotBlank().Validate(field.Data)) == 0 { choices := field.GetOption("choices").Value.(*Choices)