Валидация Laravel: условие required_with_all всегда проходит
Согласнодокументация по валидации:
required_with_all: Foo, бар, ... Проверяемое поле должно присутствовать, только если присутствуют все остальные указанные поля.
Вот мой тест:
Route::get('/test/{param}', function($param) {
$screenRules = array(
'foo' => 'string',
'param' => 'required_with_all:foo',
);
$validator = Validator::make(array('param' => $param), $screenRules);
if($validator->fails())
{
echo '<pre>';
print_r($validator->errors());
echo '</pre>';
die('Dying now!');
}
else
{
echo 'All Good!';
die('Dying now!');
}
});
Я ожидаю, что, так как я не прохожуfoo
этот тест должен провалиться. Но этот тест проходит, когда я называю свой URL:mysite.com/test/mytest
Точно так же, если вы поменялись ролями, вот так
'param' => 'required_without_all:foo',
и передать Foo в качестве ввода
array('param' => $param, 'foo' => 'bar')
Я ожидаю, что сfoo
присутствует, вы не можете иметьparam
в качестве ввода. Но тест все равно проходит.
В обоих случаях я должен видеть ошибки. и так, что здесь происходит?
Я также знаю, что мои функции проверки правильны, потому что моя другая проверка работает. Например. добавить условие так:
'param' => 'required_with_all:foo|numeric',
и это действительно выдает ошибкуThe param must be a number.