Heim  >  Artikel  >  Backend-Entwicklung  >  Die Ozzo-Validierung in Regeln gibt bei gleichen Werten einen Fehler zurück

Die Ozzo-Validierung in Regeln gibt bei gleichen Werten einen Fehler zurück

WBOY
WBOYnach vorne
2024-02-05 22:48:03836Durchsuche

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

Frageninhalt

Ich habe einen einfachen Code, der echo 作为引擎,使用 ozzo-validation als Anforderungsvalidator verwendet.

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"}),
            ),
        ),
    )
}

Das ist die Anfrage, die ich gesendet habe:

{"value":["true"]}

Ich erhalte diesen Fehler aufgrund der In-Regel:

value: (0: must be a valid value.).

Aber wenn ich den Wert mit ==reflect.DeppEqual überprüfe, sind die Werte gleich:

fmt.Println(reflect.DeepEqual([]string{"true", "false"}[0], a.Value[0]))
fmt.Println([]string{"true", "false"}[0] == a.Value[0])


output:
true
true

Was mache ich hier falsch?


Richtige Antwort


Verwenden Sie validation.Each(validation.In([]string{"true", "false"})) 会将 Value 切片中的每个元素与提供给 validate.In 的切片进行比较,即 []string{ “真”,“假”}.

Verwenden Sie zum Vergleich die einzelnen Werte in validation.In("true", "false")Value 切片中的每个元素与 validate.In.

Das obige ist der detaillierte Inhalt vonDie Ozzo-Validierung in Regeln gibt bei gleichen Werten einen Fehler zurück. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen