Saya ada kod mudah yang menggunakan echo
作为引擎,使用 ozzo-validation
sebagai pengesah permintaan.
func (a MyRequest) Validate() error { return validation.ValidateStruct( &a, validation.Field(&a.Value, validation.Required, validation.Length(1, 5), validation.Each(validation.NilOrNotEmpty, validation.In([]string{"true", "false"}), ), ), ) }
Ini adalah permintaan yang saya hantar:
{"value":["true"]}
Saya mendapat ralat ini daripada peraturan In
:
value: (0: must be a valid value.).
Tetapi apabila saya menyemak nilai menggunakan ==
和 reflect.DeppEqual
nilainya adalah sama:
fmt.Println(reflect.DeepEqual([]string{"true", "false"}[0], a.Value[0])) fmt.Println([]string{"true", "false"}[0] == a.Value[0]) output: true true
Apa salah saya di sini?
guna validation.Each(validation.In([]string{"true", "false"}))
会将 Value
切片中的每个元素与提供给 validate.In
的切片进行比较,即 []string{ “真”,“假”}
.
Gunakan nilai individu dalam validation.In("true", "false")
将 Value
切片中的每个元素与 validate.In
untuk perbandingan.
Atas ialah kandungan terperinci pengesahan ozzo dalam peraturan mengembalikan ralat untuk nilai yang sama. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!