Maison > Article > développement back-end > ozzo validation v4 renvoie le champ #0 introuvable dans la structure
Lors de l'utilisation de la validation Ozzo v4 en php, vous pouvez rencontrer un message d'erreur courant : "la validation ozzo v4 a renvoyé le champ #0 introuvable dans la structure". Ce message d'erreur indique que le validateur ne trouve pas le champ spécifié dans la structure de données. Cela peut être dû à des noms de champs incorrects, à des structures de données incompatibles ou à des règles de validation mal définies. Avant de résoudre ce problème, nous devons revérifier le code et les règles de validation pour nous assurer que les noms de champs sont correctement spécifiés et correspondent à la structure des données. Avec un dépannage et un débogage minutieux, nous pouvons facilement résoudre ce problème et faire fonctionner le code sans problème.
J'utilise "github.com/go-ozzo/ozzo-validation/v4"
.
Voici ma structure :
type mystruct struct { uuid string `json:"uuid"` firstuuid string `json:"first_uuid"` seconduuid string `json:"second_uuid"` thirduuid string `json:"third_uuid"` phonenumber string `json:"phone_number"` email string `json:"email"` skypeid string `json:"skype_id"` city string `json:"city"` comment string `json:"comment"` personnelid string `json:"personnel_id"` firstdate string `json:"first_date"` seconddate string `json:"second_date"` firstboolean bool `json:"first_boolean"` secondboolean bool `json:"second_boolean"` }
Voici la méthode de vérification :
func (m mystruct) validate() error { err := validation.validatestruct( validation.field(&uui.personnelid, validation.match(personnelidregexp)), validation.field(&uui.uuid, is.uuid), validation.field(&uui.firstuuid, validation.required, is.uuid), validation.field(&uui.seconduuid, validation.required, is.uuid), validation.field(&uui.thirduuid, validation.required, is.uuid), validation.field(&uui.email, validation.required, is.email), validation.field(&uui.phonenumber, validation.required, validation.match(mobileregexp)), validation.field(&uui.city, validation.required), validation.field(&uui.comment), validation.field(&uui.skypeid, validation.required), validation.field(&uui.firstdate, validation.date(time.dateonly)), validation.field(&uui.seconddate, validation.date(time.dateonly)), ) return err }
Voici la demande que j'ai envoyée :
{ "uuid": "1e57ef49-352f-4545-a43a-b51cad6c5a0a", "phone_number": "09124567891", "email": "[email protected]", "skype_id": "some_skype_id", "city": "a city", "personnel_id": "", "comment": "no comment for now!", "first_date": "", "second_date": "", "first_uuid": "94038913-2bdb-4dde-99fb-640a24e1c003", "second_uuid": "7fa0e242-841b-4de0-a3ce-e2b54ecd1bca", "third_uuid": "35ab6711-852e-42c8-aab3-dfb901a845f5", "first_boolean": true, "second_boolean": false }
J'obtiens cette erreur :
field #0 cannot be found in the struct
validatestruct Le premier paramètre est structptr
:
func validatestruct(structptr interface{}, fields ...*fieldrules) error
Ce paramètre est absent de votre code. Malheureusement, le compilateur ne peut pas détecter de telles erreurs.
Voici l'implémentation corrigée (veuillez noter uui
也应该是 m
) :
func (m MyStruct) Validate() error { err := validation.ValidateStruct( &m, // <== The first parameter is a pointer to the struct. validation.Field(&m.PersonnelID, validation.Match(personnelIDRegexp)), validation.Field(&m.UUID, is.UUID), validation.Field(&m.FirstUUID, validation.Required, is.UUID), validation.Field(&m.SecondUUID, validation.Required, is.UUID), validation.Field(&m.ThirdUUID, validation.Required, is.UUID), validation.Field(&m.Email, validation.Required, is.Email), validation.Field(&m.PhoneNumber, validation.Required, validation.Match(mobileRegexp)), validation.Field(&m.City, validation.Required), validation.Field(&m.Comment), validation.Field(&m.SkypeID, validation.Required), validation.Field(&m.FirstDate, validation.Date(time.DateOnly)), validation.Field(&m.SecondDate, validation.Date(time.DateOnly)), ) return err }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!