日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
創(chuàng)新互聯(lián)GoFrame教程:GoFrame自定義規(guī)則-完整數據校驗

基本介紹

大家也許已經注意到,當我們給定一個?struct?時,我們的規(guī)則只能對其中的鍵值或者屬性進行校驗,如果我們想要通過規(guī)則完整校驗?struct?這個對象時,居然無法注冊校驗組件的自定義校驗規(guī)則。當然,我們的校驗組件也支持直接校驗當前的?struct?對象。我們來看一個例子,在這個例子中,我們需要對創(chuàng)建的用戶請求進行完整的自定義校驗,并注冊一個?UserCreateReq?的校驗規(guī)則來實現。

創(chuàng)新互聯(lián)建站是專業(yè)的修武網站建設公司,修武接單;提供網站制作、成都網站設計,網頁設計,網站設計,建網站,PHP網站建設等專業(yè)做網站服務;采用PHP框架,可快速的進行修武網站開發(fā)網頁制作和功能擴展;專業(yè)做搜索引擎喜愛的網站,專業(yè)的做網站團隊,希望更多企業(yè)前來合作!

使用示例

package main

import (
	"context"
	"fmt"
	"github.com/GOgf/gf/v2/database/gdb"
	"github.com/gogf/gf/v2/errors/gerror"
	"github.com/gogf/gf/v2/frame/g"
	"github.com/gogf/gf/v2/os/gctx"
	"github.com/gogf/gf/v2/util/gvalid"
	"time"
)

type UserCreateReq struct {
	g.Meta `v:"UserCreateReq"`
	Name   string
	Pass   string
}

func RuleUserCreateReq(ctx context.Context, in gvalid.RuleFuncInput) error {
	var req *UserCreateReq
	if err := in.Data.Scan(&req); err != nil {
		return gerror.Wrap(err, `Scan data to UserCreateReq failed`)
	}
	// SELECT COUNT(*) FROM `user` WHERE `name` = xxx
	count, err := g.Model("user").Ctx(ctx).Cache(gdb.CacheOption{
		Duration: time.Hour,
		Name:     "",
		Force:    false,
	}).Where("name", req.Name).Count()
	if err != nil {
		return err
	}
	if count > 0 {
		return gerror.Newf(`The name "%s" is already token by others`, req.Name)
	}
	return nil
}

func main() {
	var (
		ctx  = gctx.New()
		user = &UserCreateReq{
			Name: "john",
			Pass: "123456",
		}
	)  
	err := g.Validator().RuleFunc("UserCreateReq", RuleUserCreateReq).Data(user).Run(ctx)  
	fmt.Println(err)
}

可以看到,我們通過給結構體一個?g.Meta?嵌入的元數據,并綁定?UserCreateReq?的自定義規(guī)則,?g.Meta?作為結構體的一部分,當我們通過?CheckStruct?校驗該結構體對象時,便可以通過?UserCreateReq?來實現校驗。

上面的例子,我們執(zhí)行后,終端輸出:

The name "john" is already token


網站題目:創(chuàng)新互聯(lián)GoFrame教程:GoFrame自定義規(guī)則-完整數據校驗
文章分享:http://m.5511xx.com/article/dpdcche.html