Heim > Artikel > Backend-Entwicklung > Die Ozzo-Validierung v4 gibt Feld Nr. 0 zurück, das in der Struktur nicht gefunden wurde
Wenn Sie die Ozzo-Validierung v4 in PHP verwenden, kann es zu einer häufigen Fehlermeldung kommen: „Ozzo-Validierung v4 hat das zurückgegebene Feld #0 nicht in der Struktur gefunden“. Diese Fehlermeldung weist darauf hin, dass der Validator das angegebene Feld in der Datenstruktur nicht finden kann. Dies kann durch falsche Feldnamen, nicht übereinstimmende Datenstrukturen oder falsch festgelegte Validierungsregeln verursacht werden. Bevor wir dieses Problem lösen, müssen wir den Code und die Validierungsregeln noch einmal überprüfen, um sicherzustellen, dass die Feldnamen korrekt angegeben sind und mit der Datenstruktur übereinstimmen. Durch sorgfältige Fehlerbehebung und Fehlerbehebung können wir dieses Problem leicht beheben und dafür sorgen, dass der Code reibungslos läuft.
Ich verwende "github.com/go-ozzo/ozzo-validation/v4"
.
Das ist meine Struktur:
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"` }
Dies ist die Verifizierungsmethode:
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 }
Das ist die Anfrage, die ich gesendet habe:
{ "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 }
Ich erhalte diese Fehlermeldung:
field #0 cannot be found in the struct
validatestruct Der erste Parameter ist structptr
:
func validatestruct(structptr interface{}, fields ...*fieldrules) error
Dieser Parameter fehlt in Ihrem Code. Leider kann der Compiler solche Fehler nicht abfangen.
Dies ist die korrigierte Implementierung (bitte beachten, 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 }
Das obige ist der detaillierte Inhalt vonDie Ozzo-Validierung v4 gibt Feld Nr. 0 zurück, das in der Struktur nicht gefunden wurde. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!