1

我正在使用 Silex,并尝试使用验证器服务验证某些值。但问题是我需要对一个值应用多个约束,但验证器在不使用Required约束的情况下不允许这样做。

当我只想验证一个选择值(比如,'apple' 或 'orange')时,我必须将约束ChoiceNotNull(因为Choice允许一个null值)包装到RequiredCollection(因为Required不能没有它就不能使用Collection,它是CollectionValidator谁验证了一系列Required的约束) 像这样:

$violations = $app['validator']->validate(array('value'), 
    new Collection(array(
        new Required(array(
            new Choice(array('apple', 'orange')),
            new NotNull()
        ))
    )));

它看起来很冗长,所以我正在寻找更优雅的解决方案(对于验证器的这种显式使用)。

4

1 回答 1

0

您可以使用validateValue接受一组约束作为第二个参数的函数。

$violations = $app['validator']->validateValue('value', array(
    new Choice(array('apple', 'orange')),
    new NotBlank()
));
于 2013-03-26T15:01:45.980 回答