| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- package valid
- import (
- "context"
- "reflect"
- "strings"
- "github.com/gogf/gf/errors/gerror"
- "github.com/gogf/gf/util/gconv"
- "github.com/gogf/gf/util/gvalid"
- )
- func init() {
- if err := gvalid.RegisterRule("int-in", IntInChecker); err != nil {
- panic(err)
- }
- }
- func IntInChecker(ctx context.Context, rule string, value interface{}, message string, data interface{}) error {
- // rule int-in:1,2
- // fmt.Println(rule, value, value == nil)
- if value == nil {
- return nil
- }
- reflectValue := reflect.ValueOf(value)
- if reflectValue.Kind() == reflect.Ptr {
- if reflectValue.IsNil() {
- return nil
- }
- }
- v := gconv.String(value)
- allow := strings.Split(rule, ":")
- if len(allow) < 2 {
- return nil
- }
- allow = strings.Split(allow[1], ",")
- for _, a := range allow {
- if v == a {
- return nil
- }
- }
- return gerror.New(message)
- }
|