NULLを許可する値を検証するのに問題がありますが、Symfony2バリデーターコンポーネントでは空の文字列ではありません。Symfony2バリデーター、NotBlankは許可するnull
私は、サイレックス・アプリケーションでコンポーネントを統合し、私の応用エンティティ(ない教義エンティティ)のいくつかのプロパティを検証するために、プロパティーの制約のターゲットを使用しました。
私はこの問題は、service_id
が有効であるべきNULLのときNotBlank
制約がで蹴り、違反を報告することで、私のエンティティの名前とのservice_idを検証するために、私のエンティティクラスにこの静的メソッドを追加しました。
static public function loadValidatorMetadata(ClassMetadata $metadata)
{
// name should never be NULL or a blank string
$metadata->addPropertyConstraint('name', new Assert\NotNull());
$metadata->addPropertyConstraint('name', new Assert\NotBlank());
// service_id should either be a non-blank string or NULL
$metadata->addPropertyConstraint('service_id', new Assert\NotBlank());
}
Bottomlineは、私がservice_id
として文字列またはNULLを許可しますが、空の文字列を許可しない方法を探しています。
PS:私はまたMinLength(1)
制約を試してみたが、それは残念ながら、空の文字列を許可します。
Null-Validatorがありますが、NULLだけが有効な場合、つまり文字列(空であるかどうか)のどちらでも有効です。 )それは違反されるでしょう。カスタムバリデータを書きませんか? – dbrumann
カスタムバリデーターは確かにオプションですが、私にはそれがボックスから外すことは不可能だとは考えにくいという共通の用途に思えました。 – ChrisR
私もそうです。実際にはこれは間違っているようです(少なくとも言葉遣い)。私にとって、NotBlankは、空の文字列の検証が必要であることを意味します。私は制約が空白値としてnullを扱う理由を理解していません。 – codepushr