Применение нескольких ограничений за один проход проверки в Silex

Я использую Silex и пытаюсь проверить какое-то значение с помощью службы проверки. Но проблема в том, что мне нужно применить несколько ограничений к одному значению, но валидатор не позволяет сделать это без использования ограничения Required.

Когда я просто хочу проверить значение выбора (скажем, «яблоко» или «апельсин»), я должен обернуть ограничения Choice и NotNull (поскольку Choice допускает значение null) в Required и Collection (поскольку Required нельзя использовать без Collection, и это CollectionValidator, который проверяет ряд ограничений Required) следующим образом:

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

Это выглядит многословно, поэтому я ищу более элегантное решение (для такого явного использования валидатора).


person schyzoo    schedule 22.01.2013    source источник
comment
Данные находятся в форме или вы просто проверяете некоторые данные отдельно?   -  person Maerlyn    schedule 22.01.2013


Ответы (1)


Вы можете использовать функцию validateValue, которая принимает массив ограничений в качестве второго параметра.

$violations = $app['validator']->validateValue('value', array(
    new Choice(array('apple', 'orange')),
    new NotBlank()
));
person jockri    schedule 26.03.2013