pengesahan ozzo dalam peraturan mengembalikan ralat untuk nilai yang sama

WBOY
Lepaskan: 2024-02-05 22:48:03
ke hadapan
826 orang telah melayarinya

规则中的 ozzo 验证对于相等值返回错误

Kandungan soalan

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"}),
            ),
        ),
    )
}
Salin selepas log masuk

Ini adalah permintaan yang saya hantar:

{"value":["true"]}
Salin selepas log masuk

Saya mendapat ralat ini daripada peraturan In:

value: (0: must be a valid value.).
Salin selepas log masuk

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
Salin selepas log masuk

Apa salah saya di sini?


Jawapan betul


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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan