您好,登錄后才能下訂單哦!
這篇文章主要介紹“怎么使用GoFrame校驗對象和校驗結構體”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“怎么使用GoFrame校驗對象和校驗結構體”文章能幫助大家解決問題。
數據校驗組件提供了數據校驗對象:用于數據校驗統一的配置管理,支持我們便捷的進行鏈式操作。
type Validator func New() *Validator func (v *Validator) CheckMap(params interface{}) Error func (v *Validator) CheckStruct(object interface{}) Error func (v *Validator) CheckValue(value interface{}) Error func (v *Validator) Clone() *Validator func (v *Validator) Ctx(ctx context.Context) *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) Rules(rules interface{}) *Validator
New()方法用于創建一個新的校驗對象。
CheckValue/CheckMap/CheckStruct方法用于特定參數類型的數據校驗,我們在項目開發中使用比較多的是CheckStruct,也建議大家使用CheckStruct。
Ctx()方法用于傳遞Context上下文變量。
I18n()方法用于設置當前校驗對象的I18N國際化組件,默認情況下,校驗組件使用的是框架全局默認的i18n組件對象。
Data()方法用于設置需要校驗的數據集合,支持map類型或者struct類型。
Rules()方法用于傳遞當前鏈式操作校驗的自定義校驗規則,支持使用[]string類型或者map類型。
Messages()方法用于傳遞當前鏈式操作校驗的自定義錯誤提示信息,往往使用map類型傳遞,具體看后續代碼示例。
在數據校驗對象的CheckValue/CheckMap/CheckStruct方法中,不存在Context上下文變量參數,而是通過鏈式操作的Ctx方法來控制。
GoFrame的g模塊中定義了Validator方法來快捷創建校驗對象:官方也推薦我們使用g模塊的g.Validator()方式來快捷創建一個校驗對象。
err := g.Validator().Rules("min:60").Messages("考試不及格").CheckValue(16) fmt.Println(err.String()) //打印結果:考試不及格
package main import ( "fmt" "github.com/gogf/gf/frame/g" ) func main() { data := g.Map{ "password": "123", //這個的作用僅是定義了這個結構設置了默認值,并不代表著傳入了值 } //Data()中的參數是需要進行校驗的數據集合,常用于map或者結構體類型。 //CheckValue()是輸入的參數 err := g.Validator().Data(data).Rules("required-with:password").Messages("請輸入確認密碼").CheckValue("") if err != nil { fmt.Println("CheckValue傳入為空時:" + err.String()) // 請輸入確認密碼 } else { fmt.Println("CheckValue傳入為空時:校驗通過") } err = g.Validator().Data(data).Rules("required-with:password").Messages("請輸入確認密碼").CheckValue("1") if err != nil { fmt.Println("CheckValue傳入不為空時:" + err.String()) // 請輸入確認密碼 } else { fmt.Println("CheckValue傳入不為空時:校驗通過") } }
params := map[string]interface{}{ "passport": "", "password": "wangzhongyang", "password2": "zhongyang", } 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).CheckMap(params) if err != nil { g.Dump(err.Maps()) }
執行后,終端輸出:
{ "passport": { "length": "賬號長度應當在6到16之間", "required": "賬號不能為空" }, "password": { "same": "兩次密碼輸入不相等" } }
type User struct { Name string `v:"required#請輸入用戶姓名"` Type int `v:"required#請選擇用戶類型"` } data := g.Map{ "name": "wangzhongyang", } user := User{} if err := gconv.Scan(data, &user); err != nil { panic(err) } err := g.Validator().Data(data).CheckStruct(user) if err != nil { fmt.Println(err.Items()) //[map[Type:map[required:請選擇用戶類型]]] }
關于“怎么使用GoFrame校驗對象和校驗結構體”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。