37 lignes
No EOL
1 Kio
Go
37 lignes
No EOL
1 Kio
Go
package modelHelper
|
|
|
|
import (
|
|
"reflect"
|
|
"net/http"
|
|
"github.com/ewhal/nyaa/util/log"
|
|
)
|
|
|
|
func IsZeroOfUnderlyingType(x interface{}) bool {
|
|
return x == reflect.Zero(reflect.TypeOf(x)).Interface()
|
|
}
|
|
|
|
// AssignValue assign form values to model.
|
|
func AssignValue(model interface{}, form interface{}) {
|
|
modelIndirect := reflect.Indirect(reflect.ValueOf(model))
|
|
formElem := reflect.ValueOf(form).Elem()
|
|
typeOfTForm := formElem.Type()
|
|
for i := 0; i < formElem.NumField(); i++ {
|
|
modelField := modelIndirect.FieldByName(typeOfTForm.Field(i).Name)
|
|
if modelField.IsValid() {
|
|
formField := formElem.Field(i)
|
|
modelField.Set(formField)
|
|
} else {
|
|
log.Warnf("modelField : %s - %s", typeOfTForm.Field(i).Name, modelField)
|
|
}
|
|
}
|
|
}
|
|
|
|
// AssignValue assign form values to model.
|
|
func BindValueForm(form interface{}, r *http.Request) {
|
|
r.ParseForm()
|
|
formElem := reflect.ValueOf(form).Elem()
|
|
typeOfTForm := formElem.Type()
|
|
for i := 0; i < formElem.NumField(); i++ {
|
|
formElem.Field(i).Set(r.PostFormValue(typeOfTForm.Field(i).Name))
|
|
}
|
|
} |