Pārlūkot izejas kodu

add support for embedded struct to Bind

Martin Karlsch 10 gadi atpakaļ
vecāks
revīzija
0569c5fb95
1 mainītis faili ar 11 papildinājumiem un 0 dzēšanām
  1. 11 0
      binding/binding.go

+ 11 - 0
binding/binding.go

@@ -84,6 +84,17 @@ func mapForm(ptr interface{}, form map[string][]string) error {
 	formStruct := reflect.ValueOf(ptr).Elem()
 	for i := 0; i < typ.NumField(); i++ {
 		typeField := typ.Field(i)
+
+		// support for embeded fields
+		valueField := formStruct.Field(i)
+		if valueField.Kind() == reflect.Struct {
+			err := mapForm(valueField.Addr().Interface(), form)
+			if err != nil {
+				return err
+			}
+			continue
+		}
+
 		if inputFieldName := typeField.Tag.Get("form"); inputFieldName != "" {
 			structField := formStruct.Field(i)
 			if !structField.CanSet() {