Documentation ¶
Overview ¶
表单过滤库
Index ¶
- Constants
- func Filter(src map[string]interface{}, rules []string, selects ...map[string]interface{}) (map[string]interface{}, *gvalid.Error)
- func FilterJson(src map[string]interface{}, jsonRule string, selects ...map[string]interface{}) (map[string]interface{}, *gvalid.Error)
- func FilterJsonOnly(src map[string]interface{}, jsonRule string, selects ...map[string]interface{}) (map[string]interface{}, *gvalid.Error)
- func FilterMap(src map[string]interface{}, rules map[string]string, ...) (map[string]interface{}, *gvalid.Error)
- func FilterOnly(src map[string]interface{}, rules []string, selects ...map[string]interface{}) (map[string]interface{}, *gvalid.Error)
- func FilterStruct(src map[string]interface{}, rules interface{}, ...) (map[string]interface{}, *gvalid.Error)
- func FilterStructOnly(src map[string]interface{}, rules interface{}, ...) (map[string]interface{}, *gvalid.Error)
- type DefValueFunc
- type FieldDataType
- type FieldName
- type FilterTag
- func GetFilterFromArray(arr []string, selects ...map[string]interface{}) []*FilterTag
- func GetFilterFromJson(js string, selects ...map[string]interface{}) []*FilterTag
- func GetFilterFromMap(mp map[string]string, selects ...map[string]interface{}) []*FilterTag
- func GetFilterFromStruct(obj interface{}, selects ...map[string]interface{}) []*FilterTag
- func NewTag(structTag ...string) *FilterTag
- func (f *FilterTag) FromJson(v map[string]interface{})
- func (f *FilterTag) GetDataType() FieldDataType
- func (f *FilterTag) GetDefValue() interface{}
- func (f *FilterTag) GetFieldName() FieldName
- func (f *FilterTag) GetFormatter() string
- func (f *FilterTag) GetParamName() string
- func (f *FilterTag) GetRules() string
- func (f *FilterTag) GetValidMsg() string
- func (f *FilterTag) Parse(structTag string)
- func (f *FilterTag) SetDataType(dataType FieldDataType)
- func (f *FilterTag) SetDefValue(v interface{})
- func (f *FilterTag) SetFieldName(fieldName FieldName)
- func (f *FilterTag) SetFormatter(formatter string)
- func (f *FilterTag) SetParamName(paramName string)
- func (f *FilterTag) SetRules(rules string)
- func (f *FilterTag) SetValidMsg(msg string)
- func (f *FilterTag) String() string
- func (f *FilterTag) ToJson() string
- func (f *FilterTag) ToMap() map[string]interface{}
- func (f *FilterTag) ToRuleTag() string
- type IFuncManager
Examples ¶
Constants ¶
View Source
const XFilterTagName = "filter"
View Source
const XOrmTagName = "orm"
Variables ¶
This section is empty.
Functions ¶
func Filter ¶
func Filter(src map[string]interface{}, rules []string, selects ...map[string]interface{}) (map[string]interface{}, *gvalid.Error)
使用规则数组过滤
Example ¶
data, errs := Filter(testData, arrRules) fmt.Printf("filter3 result:%v, errors:%v\n", data, errs) data1, errs1 := Filter(testData, arrRules, map[string]interface{}{ "name": 1, "email": 1, }) fmt.Printf("filter4 result:%v, errors:%v\n", data1, errs1)
Output:
func FilterJson ¶
func FilterJson(src map[string]interface{}, jsonRule string, selects ...map[string]interface{}) (map[string]interface{}, *gvalid.Error)
使用json验证规则过滤
Example ¶
data, errs := FilterJson(testData, jsonRules) fmt.Printf("filter5 result:%v, errors:%v\n", data, errs) data1, errs1 := FilterJson(testData, jsonRules, map[string]interface{}{ "name": 1, "email": 1, }) fmt.Printf("filter6 result:%v, errors:%v\n", data1, errs1)
Output:
func FilterJsonOnly ¶
func FilterJsonOnly(src map[string]interface{}, jsonRule string, selects ...map[string]interface{}) (map[string]interface{}, *gvalid.Error)
使用json验证规则过滤,前且只返回src中存在的字段
func FilterMap ¶
func FilterMap(src map[string]interface{}, rules map[string]string, selects ...map[string]interface{}) (map[string]interface{}, *gvalid.Error)
使用map规则过滤
Example ¶
data, errs := FilterMap(testData, rules) fmt.Printf("filter1 result:%v, errors:%v\n", data, errs) data1, errs1 := FilterMap(testData, rules, map[string]interface{}{ "name": 1, "email": 1, }) fmt.Printf("filter2 result:%v, errors:%v\n", data1, errs1)
Output:
func FilterOnly ¶
func FilterOnly(src map[string]interface{}, rules []string, selects ...map[string]interface{}) (map[string]interface{}, *gvalid.Error)
使用规则数组过滤,并且只返回输入参数中存在的字段
func FilterStruct ¶
func FilterStruct(src map[string]interface{}, rules interface{}, selects ...map[string]interface{}) (map[string]interface{}, *gvalid.Error)
使用struct定义过滤
Example ¶
data, errs := FilterStruct(testData, &TestFilterStruct{}) fmt.Printf("filter7 result:%v, errors:%v\n", data, errs) data1, errs1 := FilterStruct(testData, &TestFilterStruct{}, map[string]interface{}{ "name": 1, "email": 1, }) fmt.Printf("filter8 result:%v, errors:%v\n", data1, errs1)
Output:
Types ¶
type DefValueFunc ¶
type DefValueFunc func(params ...interface{}) interface{}
type FieldDataType ¶
type FieldDataType string
type FilterTag ¶
type FilterTag struct {
// contains filtered or unexported fields
}
字段过滤器使用的tag
func GetFilterFromArray ¶
从字符串数组中获取过滤规则列表
Example ¶
rules := []string{ "^name&string$author~!required", "^age&int~1", "^birthday&time$datetime~2019-01-01!required", "^isAudit&bool~false", } filters := GetFilterFromArray(rules) for i, item := range filters { fmt.Printf(fmt.Sprintf("%d:%s\n", i, item.ToJson())) }
Output: 0:{ "dataType": "string", "defValue": "", "fieldName": "name", "formatter": "author", "rules": "required" } 1:{ "dataType": "int", "defValue": "1", "fieldName": "age", "formatter": "", "rules": "" } 2:{ "dataType": "time", "defValue": "2019-01-01", "fieldName": "birthday", "formatter": "datetime", "rules": "required" } 3:{ "dataType": "bool", "defValue": "false", "fieldName": "isAudit", "formatter": "", "rules": "" }
func GetFilterFromJson ¶
从json字符串获取过滤规则
Example ¶
filters := GetFilterFromJson(jsonRules) if filters == nil { fmt.Printf("parse fail.") } for i, item := range filters { fmt.Printf(fmt.Sprintf("%d:%s\n", i, item.ToJson())) }
Output: 0:{ "dataType": "bool", "defValue": "", "fieldName": "isAudit", "formatter": "", "rules": "" } 1:{ "dataType": "string", "defValue": "", "fieldName": "name", "formatter": "author", "rules": "required" } 2:{ "dataType": "int", "defValue": "", "fieldName": "age", "formatter": "", "rules": "" } 3:{ "dataType": "time", "defValue": "2019-01-01", "fieldName": "birthday", "formatter": "", "rules": "required" }
func GetFilterFromMap ¶
从map中获取过滤字段列表
Example ¶
rules := map[string]string{ "name": "&string$author~!required", "age": "&int~1", "birthday": "&time$datetime~2019-01-01!required", "isAudit": "&bool~false", } filters := GetFilterFromMap(rules) for i, item := range filters { fmt.Printf(fmt.Sprintf("%d:%s\n", i, item.ToJson())) }
Output: 0:{ "dataType": "string", "defValue": "", "fieldName": "", "formatter": "author", "rules": "required" } 1:{ "dataType": "int", "defValue": "1", "fieldName": "", "formatter": "", "rules": "" } 2:{ "dataType": "time", "defValue": "2019-01-01", "fieldName": "", "formatter": "datetime", "rules": "required" } 3:{ "dataType": "bool", "defValue": "false", "fieldName": "", "formatter": "", "rules": "" }
func GetFilterFromStruct ¶
从struct中获取过滤规则
Example ¶
filters := GetFilterFromStruct(&TestFilterStruct{}) if filters == nil { fmt.Printf("parse fail.") } for i, item := range filters { fmt.Printf(fmt.Sprintf("%d:%s\n", i, item.ToJson())) }
Output:
func NewTag ¶
创建过滤器
Example ¶
filterTag = NewTag("^user_id&string~admin") fmt.Printf("new tag:%v", filterTag)
Output: new tag:^user_id&string~admin
func (*FilterTag) GetDataType ¶
func (f *FilterTag) GetDataType() FieldDataType
func (*FilterTag) GetDefValue ¶
func (f *FilterTag) GetDefValue() interface{}
func (*FilterTag) GetFieldName ¶
func (*FilterTag) GetFormatter ¶
func (*FilterTag) GetParamName ¶
func (*FilterTag) GetValidMsg ¶
func (*FilterTag) Parse ¶
Example ¶
filterTag.Parse("^name&string~张三$author!required") fmt.Printf("parse:%v", filterTag)
Output: parse:^name&string$author~张三!required
func (*FilterTag) SetDataType ¶
func (f *FilterTag) SetDataType(dataType FieldDataType)
func (*FilterTag) SetDefValue ¶
func (f *FilterTag) SetDefValue(v interface{})
func (*FilterTag) SetFieldName ¶
func (*FilterTag) SetFormatter ¶
func (*FilterTag) SetParamName ¶
func (*FilterTag) SetValidMsg ¶
func (*FilterTag) String ¶
转换成tag字符串 @字段名 #数据类型 $格式化工具名 ~默认值 !验证规则 @fieldName#dataType$formatter~defValue!rules
Example ¶
s := filterTag.String() fmt.Printf("string:%v", s)
Output: string:^name&string$author~张三!required
func (*FilterTag) ToJson ¶
Example ¶
fmt.Printf("json:%v", filterTag.ToJson())
Output: json:{ "dataType": "string", "defValue": "张三", "fieldName": "name", "formatter": "author", "rules": "required" }
type IFuncManager ¶
type IFuncManager interface { Register(name string, fn DefValueFunc) bool Unregister(fnName string) bool RegisterFormat(name string, fn DefValueFunc) bool UnregisterFormat(name string) bool HasFunc(fnName string) bool HasFormatter(fnName string) bool Call(fnName string, params ...interface{}) (interface{}, error) Format(fnName string, params ...interface{}) (interface{}, error) }
func FuncManager ¶
func FuncManager(name ...string) IFuncManager
Click to show internal directories.
Click to hide internal directories.