@@ -69,8 +69,6 @@ func NewTransformer(model interface{}) (*Transformer, error) {
6969
7070 tr .Fields = fields
7171
72- fmt .Printf ("tr: %+v\n " , tr .Fields )
73-
7472 return tr , nil
7573}
7674
@@ -88,12 +86,12 @@ func (t *Transformer) scanModel(rValue reflect.Value, rType reflect.Type, names
8886 tags := rType .Field (i ).Tag
8987
9088 name := tags .Get (tagName )
89+ fieldName := rType .Field (i ).Name
9190 if name == "" {
92- name = rType . Field ( i ). Name
91+ name = fieldName
9392 }
9493
9594 nname := append (names , name )
96-
9795 field := FormField {
9896 Label : tags .Get (tagLabel ),
9997 Placeholder : tags .Get (tagPlaceholder ),
@@ -228,7 +226,17 @@ func (t *Transformer) scanModel(rValue reflect.Value, rType reflect.Type, names
228226 field .Step = "any"
229227 }
230228 case reflect .Bool :
231- field .Type = FieldTypeCheckbox
229+ fieldType := FieldTypeCheckbox
230+ if len (names ) > 0 && names [len (names )- 1 ] == name {
231+ // radio-options use the same 'name' as their parent for grouping
232+ fieldType = FieldTypeRadios
233+ }
234+
235+ field .Type = fieldType
236+
237+ // replace last slice element with the field name
238+ nname [len (nname )- 1 ] = fieldName
239+ field .Id = strings .Join (nname , "." )
232240 case reflect .Slice , reflect .Array :
233241 case reflect .Map :
234242 case reflect .Struct :
0 commit comments