新聞中心
這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
創(chuàng)新互聯(lián)GoFrame教程:GoFrame 數(shù)據(jù)校驗-校驗對象
校驗對象
數(shù)據(jù)校驗組件提供了數(shù)據(jù)校驗對象,用于數(shù)據(jù)校驗的統(tǒng)一的配置管理、便捷的鏈式操作。

成都創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比瀘州網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式瀘州網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋瀘州地區(qū)。費用合理售后完善,10余年實體公司更值得信賴。
接口文檔: https://pkg.GO.dev/github.com/gogf/gf/v2/util/gvalid
type Validator
func New() *Validator
func (v *Validator) Assoc(assoc interface{}) *Validator
func (v *Validator) Bail() *Validator
func (v *Validator) Ci() *Validator
func (v *Validator) Clone() *Validator
func (v *Validator) Data(data interface{}) *Validator
func (v *Validator) I18n(i18nManager *gi18n.Manager) *Validator
func (v *Validator) Messages(messages interface{}) *Validator
func (v *Validator) RuleFunc(rule string, f RuleFunc) *Validator
func (v *Validator) RuleFuncMap(m map[string]RuleFunc) *Validator
func (v *Validator) Rules(rules interface{}) *Validator
func (v *Validator) Run(ctx context.Context) Error簡要說明:
- ?
New?方法用于創(chuàng)建一個新的校驗對象。 - ?
Assoc?用于關聯(lián)數(shù)據(jù)校驗。 - ?
Bail?方法用于設定只要后續(xù)的多個校驗中有一個規(guī)則校驗失敗則停止校驗立即返回錯誤結果。 - ?
Ci?方法用于設置需要比較數(shù)值的規(guī)則時,不區(qū)分字段的大小寫。 - ?
Run?方法對給定規(guī)則和信息的數(shù)據(jù)進行校驗操作。 - ?
I18n?方法用于設置當前校驗對象的?I18N?國際化組件。默認情況下,校驗組件使用的是框架全局默認的?i18n?組件對象。 - ?
Data?方法用于傳遞需要聯(lián)合校驗的數(shù)據(jù)集合,往往傳遞的是?map?類型或者?struct?類型。 - ?
Rules?方法用于傳遞當前鏈式操作校驗的自定義校驗規(guī)則,往往使用?[]string?類型或者?map?類型。 - ?
Messages?方法用于傳遞當前鏈式操作校驗的自定義錯誤提示信息,往往使用?map?類型傳遞。
由于數(shù)據(jù)校驗對象也是一個非常常用的對象,因此?g?模塊中定義了?Validator?方法來快捷創(chuàng)建校驗對象。大部分場景下我們推薦使用?g?模塊的?g.Validator()?方式來快捷創(chuàng)建一個校驗對象。
使用示例
單數(shù)據(jù)校驗
var (
err error
ctx = gctx.New()
)
err = g.Validator().
Rules("min:18").
Data(16).
Messages("未成年人不允許注冊喲").
Run(ctx)
fmt.Println(err.Error())
// Output:
// 未成年人不允許注冊喲var (
err error
ctx = gctx.New()
data = g.Map{
"password": "123",
}
)
err = g.Validator().Data("").Assoc(data).
Rules("required-with:password").
Messages("請輸入確認密碼").
Run(ctx)
fmt.Println(err.Error())Struct數(shù)據(jù)校驗
type User struct {
Name string `v:"required#請輸入用戶姓名"`
Type int `v:"required#請選擇用戶類型"`
}
var (
err error
ctx = gctx.New()
user = User{}
data = g.Map{
"name": "john",
}
)
if err = gconv.Scan(data, &user); err != nil {
panic(err)
}
err = g.Validator().Assoc(data).Data(user).Run(ctx)
if err != nil {
fmt.Println(err.(gvalid.Error).Items())
}
// Output:
// [map[Type:map[required:請選擇用戶類型]]]Map數(shù)據(jù)校驗
params := map[string]interface{}{
"passport": "",
"password": "123456",
"password2": "1234567",
}
rules := map[string]string{
"passport": "required|length:6,16",
"password": "required|length:6,16|same:password2",
"password2": "required|length:6,16",
}
messages := map[string]interface{}{
"passport": "賬號不能為空|賬號長度應當在{min}到{max}之間",
"password": map[string]string{
"required": "密碼不能為空",
"same": "兩次密碼輸入不相等",
},
}
err := g.Validator().Messages(messages).Rules(rules).Data(params).Run(gctx.New())
if err != nil {
g.Dump(err.Maps())
}執(zhí)行后,終端輸出:
{
"passport": {
"length": "賬號長度應當在6到16之間",
"required": "賬號不能為空"
},
"password": {
"same": "兩次密碼輸入不相等"
}
} 文章題目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame 數(shù)據(jù)校驗-校驗對象
文章網(wǎng)址:http://www.dlmjj.cn/article/djseggj.html


咨詢
建站咨詢
