我在验证一个值时允许使用NULL,但没有使用Symfony2验证程序组件的空字符串。Symfony2验证程序,NotBlank但允许为空
我已将该组件集成到Silex应用程序中,并使用Property Constraint目标来验证我的应用程序实体(不是Doctrine实体)的某些属性。
我已经将此静态方法添加到我的实体类中,以验证我的实体上的名称和service_id,问题是当service_id
为NULL时应该有效,NotBlank
约束会触发并报告违规。
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());
}
底线,我在寻找如何让String或NULL作为service_id
但不允许空字符串。
PS:我也试过MinLength(1)
约束,但不幸的是允许空字符串。
有一个空值验证,但它不会帮助你们,因为只有NULL将是有效的,即如果它是一个字符串(空或不)它会被违反。为什么不写一个定制的验证器? – dbrumann 2012-04-13 12:57:06
自定义验证器确实是一种选择,但对我来说,这似乎是一个常见的用例,很难相信它不可能做到开箱即用。 – ChrisR 2012-04-13 19:03:41
我也是。事实上,这看起来甚至是错误的(或者至少是措辞)。对于我来说NotBlank意味着应该有一个空白字符串的验证。我不明白为什么约束将null视为空白值。 – codepushr 2014-05-14 19:27:44