2025-03-21 11:05:42 +08:00

41 lines
773 B
Go

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
}