fix(collection): always validate fields when another field is invalid"

This commit is contained in:
Simon Vieille 2025-10-01 16:30:27 +02:00
commit b9c5f6a2fd
Signed by: deblan
GPG key ID: 579388D585F70417
2 changed files with 5 additions and 7 deletions

View file

@ -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)
}
}

View file

@ -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)