Я пытаюсь отловить ошибки, используя класс PHP с открытым исходным кодом Respect\Validation\Validator. Я использовал их пример для создания массива проверок. Хотя это, кажется, работает нормально, затем я попытался перехватить любые сообщения об ошибках, чтобы отобразить их пользователю. Я не видел способа сделать это как полный массив (проверить все, сохранить все сообщения в массиве). Поэтому вместо этого я попытался выполнить цикл, используя метод проверки в Валидаторе.
Это внутри метода класса, использующего F3 (Fat Free) Framework.
Я получаю следующую ошибку:
Невозможно использовать объект типа Respect\Validation\Validator в качестве массива
Код ниже. Как правильно выполнить эту задачу, используя здесь массивы? Спасибо за помощь!
$registerValidator =
Respect\Validation\Validator::attribute('email', Respect\Validation\Validator::email()->length(1,null)->notEmpty())
->attribute('address', Respect\Validation\Validator::stringType()->length(3,null)->notEmpty())
->attribute('city', Respect\Validation\Validator::alpha()->length(2,60)->notEmpty())
->attribute('state', Respect\Validation\Validator::alpha()->length(2,2)->notEmpty())
->attribute('zip', Respect\Validation\Validator::intType()->length(5,5)->notEmpty());
foreach($this->f3->get('POST') as $key => $value){
try{
$registerValidator[$key]->check($value);
} catch (\InvalidArgumentException $e) {
$errors = $e->getMainMessage();
$this->userMessage($errors, 'warning');
$this->f3->reroute('/register');
}
}
Я также пытался использовать метод assert, как указано в их документах, но, используя приведенное ниже изменение, я получаю другую ошибку при внутренней ошибке сервера 500 вместо того, чтобы видеть свое эхо:
try{
$registerValidator->assert($this->f3->get('POST'));
} catch (Respect\Validation\Validator\NestedValidationException $e) {
$errors = $e->getMessages();
echo($errors); // I can't even get here.
foreach($errors as $error){
$this->userMessage($error, 'warning');
}
$this->f3->reroute('/register');
}
С этой ошибкой 500 вместо того, чтобы видеть мое эхо, страница полностью перестает загружаться.
Все необходимые правила должны пройти для...