为了账号安全,请及时绑定邮箱和手机立即绑定

validator v8升到v9之后代码变成这样,绑定和验证分离了, 不知道写成这样行不行,但是运行还是没问题的

package main

import (
   "github.com/gin-gonic/gin"
   "gopkg.in/go-playground/validator.v9"
   "net/http"
   "time"
)

type Booking struct {
   CheckIn time.Time `form:"check_in" validate:"required,bookableDate" time_format:"2006-01-02"`
   CheckOut time.Time `form:"check_out" validate:"required,gtfield=CheckIn" time_format:"2006-01-02"`
}


func main(){

   r := gin.Default()

   validate := validator.New()
   validate.RegisterValidation("bookableDate", bookableDate)
   r.GET("/bookable", func(c *gin.Context) {
      var book Booking
      if err := c.ShouldBind(&book); err != nil {
         c.JSON(http.StatusInternalServerError, gin.H{
            "error": err.Error(),
         })
         c.Abort()
         return
      }
      if err := validate.Struct(book); err != nil {
         c.JSON(http.StatusInternalServerError, gin.H{
            "error": err.Error(),
         })
         c.Abort()
         return
      }

      c.JSON(http.StatusOK, gin.H{
         "message": "OK",
         "booking": book,
      })
   })

   r.Run()
}

func bookableDate(fl validator.FieldLevel) bool {

   if date, ok := fl.Field().Interface().(time.Time); ok {
      today := time.Now()
      if date.Unix() > today.Unix() {
         return true
      }
   }

   return false
}


正在回答

4 回答

对的,V9就是这样用的

0 回复 有任何疑惑可以回复我~

{"error":"Key: 'Booking.CheckIn' Error:Field validation for 'CheckIn' failed on the 'bookableDate' tag"}w

0 回复 有任何疑惑可以回复我~

Undefined validation function 'bookableDate' on field 'CheckIn'

1 回复 有任何疑惑可以回复我~
#1

日落梧桐

解决了吗?
2021-03-31 回复 有任何疑惑可以回复我~
#2

日落梧桐 回复 日落梧桐

lz是正确的,type Booking struct里,验证规则的地方是validate,不是视屏里的binding,改一下就行了。
2021-03-31 回复 有任何疑惑可以回复我~
#3

日落梧桐 回复 日落梧桐

不是这个原因
2021-03-31 回复 有任何疑惑可以回复我~
#4

日落梧桐

https://www.imooc.com/qadetail/353072?t=556083#id_556083
2021-04-01 回复 有任何疑惑可以回复我~
查看1条回复

为啥我的代码 此处传过来的时间恒为 2012-04-01 00:00:00 +0800 CST

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

validator v8升到v9之后代码变成这样,绑定和验证分离了, 不知道写成这样行不行,但是运行还是没问题的

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信