mirror of
https://github.com/astaxie/beego.git
synced 2024-11-22 18:20:54 +00:00
Add meta fields with required flag
This commit is contained in:
parent
88c5dfa6ea
commit
0d3a806c23
@ -422,17 +422,18 @@ func RenderForm(obj interface{}) template.HTML {
|
|||||||
fieldT := objT.Field(i)
|
fieldT := objT.Field(i)
|
||||||
|
|
||||||
label, name, fType, id, class, ignored := parseFormTag(fieldT)
|
label, name, fType, id, class, ignored := parseFormTag(fieldT)
|
||||||
|
required := parseMetaTag(fieldT)
|
||||||
if ignored {
|
if ignored {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
raw = append(raw, renderFormField(label, name, fType, fieldV.Interface(), id, class))
|
raw = append(raw, renderFormField(label, name, fType, fieldV.Interface(), id, class, required))
|
||||||
}
|
}
|
||||||
return template.HTML(strings.Join(raw, "</br>"))
|
return template.HTML(strings.Join(raw, "</br>"))
|
||||||
}
|
}
|
||||||
|
|
||||||
// renderFormField returns a string containing HTML of a single form field.
|
// renderFormField returns a string containing HTML of a single form field.
|
||||||
func renderFormField(label, name, fType string, value interface{}, id string, class string) string {
|
func renderFormField(label, name, fType string, value interface{}, id string, class string, required bool) string {
|
||||||
if id != "" {
|
if id != "" {
|
||||||
id = " id=\"" + id + "\""
|
id = " id=\"" + id + "\""
|
||||||
}
|
}
|
||||||
@ -441,8 +442,13 @@ func renderFormField(label, name, fType string, value interface{}, id string, cl
|
|||||||
class = " class=\"" + class + "\""
|
class = " class=\"" + class + "\""
|
||||||
}
|
}
|
||||||
|
|
||||||
|
requiredString := ""
|
||||||
|
if required {
|
||||||
|
requiredString = " required"
|
||||||
|
}
|
||||||
|
|
||||||
if isValidForInput(fType) {
|
if isValidForInput(fType) {
|
||||||
return fmt.Sprintf(`%v<input%v%v name="%v" type="%v" value="%v">`, label, id, class, name, fType, value)
|
return fmt.Sprintf(`%v<input%v%v name="%v" type="%v" value="%v"%v>`, label, id, class, name, fType, value, requiredString)
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf(`%v<%v%v%v name="%v">%v</%v>`, label, fType, id, class, name, value, fType)
|
return fmt.Sprintf(`%v<%v%v%v name="%v">%v</%v>`, label, fType, id, class, name, value, fType)
|
||||||
@ -496,6 +502,21 @@ func parseFormTag(fieldT reflect.StructField) (label, name, fType string, id str
|
|||||||
label = tags[2]
|
label = tags[2]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// parseMetaTag takes the stuct-tag of a StructField and parses the `meta` value.
|
||||||
|
// returned is the boolean of whether the field is required
|
||||||
|
func parseMetaTag(fieldT reflect.StructField) (required bool) {
|
||||||
|
meta := strings.Split(fieldT.Tag.Get("meta"), ",")
|
||||||
|
required = false
|
||||||
|
switch len(meta) {
|
||||||
|
case 1:
|
||||||
|
if len(meta[0]) > 0 && meta[0] != "-" {
|
||||||
|
required = true
|
||||||
|
}
|
||||||
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user