Валидация уважения для двух полей

Мне нужно проверить данные формы с помощью Respect. По крайней мере одно из этих полей должно иметь значение: $vfname а также $vlname, После некоторых проб и ошибок я обнаружил, что могу объединять и тестировать с notEmpty():

v::StringType()->notEmpty()->assert($vfname . $vlname)

Но это кажется очень смешным. Есть ли лучший способ проверки, чтобы хотя бы одно из этих полей имело значение?

2 ответа

Поддержка валидации OR операции с OneOf править. Кроме того, если вы проверяете данные формы, Key правило пригодится

v::oneOf(
    v::key('vfname', v::stringType()->notEmpty()),
    v::key('vlname', v::stringType()->notEmpty())
)
->assert(['vfname' => $vfname, 'vlname' => $vlname]);

Почему не тогда?

v::boolType()->validate(!empty($vfname) || !empty($vlname));

Примечание: преимущество использования empty() в том, что он не поднимет Undefined variable обратите внимание, если это вопрос для вас.

Другие вопросы по тегам