package form import ( "net/http" "management/internal/pkg/validation" "github.com/gorilla/schema" ) // 初始化一个解码器实例 var decoder = schema.NewDecoder() func BindForm(r *http.Request, form any) error { if err := r.ParseForm(); err != nil { return err } // 忽略名为 "csrf_token" 的表单字段 delete(r.PostForm, "csrf_token") // decoder.RegisterConverter(time.Time{}, func(s string) reflect.Value { // res, err := time.ParseInLocation("2006-01-02", s, time.Local) // if err != nil { // panic(err) // } // return reflect.ValueOf(res) // }) if err := decoder.Decode(form, r.PostForm); err != nil { return err } // 校验表单规则 if err := validation.ValidateForm(form); err != nil { return err } return nil }