php エディター Baicao は、github.com/go-playground/validator/v10 パッケージの required_if の組み合わせに関する質問を紹介します。このパッケージをデータ検証に使用する場合、特定のフィールドの値に基づいて他のフィールドが必要かどうかを判断する必要がある場合があります。現時点では、required_if 組み合わせルールを使用して、この要件を達成できます。指定された条件に基づいてフィールドが必須かどうかを判断できるため、非常に柔軟で実用的です。この記事では、required_if 組み合わせルールを使用してこの問題を解決する方法を詳しく説明します。
ソフトウェアパッケージのバージョンなど。 v9、v10:
パッケージ バージョン: v10
質問、問題、改善点: 以下のコードを実行しようとすると。このエラーが発生します。有線です。
######出力###### リーリーデモまたは再現用のコード例:
リーリー コードまたは検証パッケージの問題を特定できません。ご協力をいただければ幸いです...回避策
追加
例:
リーリー
完全な例は playground にあります (インポートされたパッケージの数が大きいため、これは Playground では確実に実行されないことに注意してください)。
問題は、required_if によりライブラリが
person//
Entity が存在するかどうかをチェックするにもかかわらず、ライブラリは空の ## を検証することです。 #パーソン
/エンティティ (そして失敗します!)。
omitempty を追加することは、ライブラリが空の
struct を無視することを意味します。これは、
required_if が必須の
struct## を保証するため、望ましい結果が得られます。 (検証されることを意味します)。
もう 1 つのオプションは、ポインターを使用することです (playground
):
リーリー
ここでの違いは、
がない場合、値は nil (デフォルト値を持つ
Entity とは対照的に) になることです。 validator
検証できないことを意味します。
注: v := validator.New(validator.WithRequiredStructEnabled())
を使用することをお勧めします (documentation
に従って)。
以上がgithub.com/go-playground/validator/v10 パッケージの required_if の組み合わせに関する問題の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。