У меня есть следующий метод проверки в моем Validation Класс:Ошибка при валидации кода
public function validate($data, $rules)
{
if(!is_array($rules))
{
$rules = array($rules);
}
foreach($rules as $rule)
{
if(is_array($rule))
{
if(!$this->{$rule[0]}($data, $rule[1]))
{
array_push($this->errors, $rule[0] . ' is ' . $rule[1]);
$ruleValue = $rule[0];
print_r($this->errorMessages[$ruleValue] . BR);
return $this->errors;
}
}
else
{
if(!$this->{$rule}($data))
{
array_push($this->errors, $rule);
print_r($this->errorMessages[$rule] . BR);
return $this->errors;
}
}
}
if(empty($this->errors))
{
return TRUE;
}
}
с методом, который проверяет действительную дату (то есть меньше, чем текущая дата)
private function validDate($data)
{
$now = date('Ymd');
return ($data < $now) ? TRUE : FALSE;
}
I имеет другой файл php, который создает этот класс проверки, а затем проверяет его на ввод и проверяет его:
if
(
$Validation->validate($email, array('required', 'isEmail')) &&
$Validation->validate($password, array('required', array('min_length', '6'), array('max_length', '20'))) &&
$Validation->validate($repeatPassword, array('required', array('min_length', '6'), array('max_length', '20'), array('matches', Input::fetch('password')))) &&
$Validation->validate($date, array('required', 'validDate'))
)
{
echo 'Yes';
}
, в идеале, эхо-код должен выполняться, когда все проверки являются истинными, и он работал нормально, прежде чем я внес изменения в действительный метод Date в классе Validation.
Он печатает ошибку, что означает, что она возвращает false, но также отображается сообщение «Да».
Я использовал &&
в инструкции if
, что означает, что если какое-либо условие является ложным, код не будет выполнен, но я не могу понять, почему он работает, когда все условия возвращают false.
Работал нормально! Таким образом, если первое условие ложно, на экране отображается сообщение об ошибке только с первого. Есть ли способ заставить его вернуть все сообщения об ошибках из всех проверок? –
Вы можете сохранить их результаты в переменной и проверить эту переменную (ы) после завершения последней проверки. – Peky
Что-то вроде: '$ Рез = $ Validation-> Validate();' '$ Рез = $ Validation-> Validate() & & $res;' И условие в конце – Peky