6
0

valid.go 836 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. package valid
  2. import (
  3. "context"
  4. "reflect"
  5. "strings"
  6. "github.com/gogf/gf/errors/gerror"
  7. "github.com/gogf/gf/util/gconv"
  8. "github.com/gogf/gf/util/gvalid"
  9. )
  10. func init() {
  11. if err := gvalid.RegisterRule("int-in", IntInChecker); err != nil {
  12. panic(err)
  13. }
  14. }
  15. func IntInChecker(ctx context.Context, rule string, value interface{}, message string, data interface{}) error {
  16. // rule int-in:1,2
  17. // fmt.Println(rule, value, value == nil)
  18. if value == nil {
  19. return nil
  20. }
  21. reflectValue := reflect.ValueOf(value)
  22. if reflectValue.Kind() == reflect.Ptr {
  23. if reflectValue.IsNil() {
  24. return nil
  25. }
  26. }
  27. v := gconv.String(value)
  28. allow := strings.Split(rule, ":")
  29. if len(allow) < 2 {
  30. return nil
  31. }
  32. allow = strings.Split(allow[1], ",")
  33. for _, a := range allow {
  34. if v == a {
  35. return nil
  36. }
  37. }
  38. return gerror.New(message)
  39. }