以下是一些关于 GoFrame 数据校验 (gvalid) 的常见问题与解答(FAQ):
1. 如何在 GoFrame 中进行数据校验?
在 GoFrame 中,可以使用 gvalid 包进行数据校验。以下是一个简单的示例:
package main
import (
"fmt"
"github.com/gogf/gf/frame/g"
)
func main() {
params := g.Map{
"name": "John",
"age": 25,
"email": "john@example.com",
}
rules := g.Map{
"name": "required|min:3",
"age": "required|between:18,60",
"email": "required|email",
}
if err := gvalid.CheckMap(params, rules); err != nil {
fmt.Println("Validation failed:", err)
} else {
fmt.Println("Validation passed")
}
}
2. 如何自定义校验规则?
可以使用 gvalid.RegisterRule 函数来自定义校验规则。以下是一个示例:
package main
import (
"fmt"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/util/gvalid"
)
func main() {
// 注册自定义规则
gvalid.RegisterRule("customRule", func(value interface{}, ruleKey string, params map[string]interface{}) error {
if value == "custom" {
return nil
}
return fmt.Errorf("%s must be 'custom'", ruleKey)
})
params := g.Map{
"customField": "custom",
}
rules := g.Map{
"customField": "customRule",
}
if err := gvalid.CheckMap(params, rules); err != nil {
fmt.Println("Validation failed:", err)
} else {
fmt.Println("Validation passed")
}
}
3. 如何获取验证错误的详细信息?
在数据校验失败时,gvalid.Check 函数会返回一个错误对象,你可以使用该对象的 Map 方法获取详细的验证错误信息。以下是一个示例:
package main
import (
"fmt"
"github.com/gogf/gf/frame/g"
"github.com/gogf/gf/util/gvalid"
)
func main() {
params := g.Map{
"name": "Jo", // 长度不符合规则
"age": 65, // 超出规定的区间
"email": "invalid-email",
}
rules := g.Map{
"name": "required|min:3",
"age": "required|between:18,60",
"email": "required|email",
}
err := gvalid.CheckMap(params, rules)
if err != nil {
fmt.Println("Validation failed:", err)
// 获取详细的错误信息
fmt.Println("Validation errors:", err.Map())
} else {
fmt.Println("Validation passed")
}
}
转载请注明出处:http://www.zyzy.cn/article/detail/7592/GoFrame