валидация формы, накопление ошибок

99
05 марта 2022, 21:50

пытаюсь в массиве вывести все ошибки которые были допущены, но в нем оказывается только одна, остальные выводит

if($nameLen<3 or $nameLen>100){
    $arr = [
    'name' => 'Название должно содержать от 3 до 100 символов',
    ];
    $err = false;
}
if($descriptionLen<3 or $descriptionLen>100){
    $arr = [
    'text' => 'Описание должно содержать от 3 до 100 символов',
    ];
    $err = false;
}
if($err == false){
    $array = array($arr);
    $this->error = $array;
    return false;
}

var_dump($this->error) выводит результат:

array(1) { [0]=> array(1) { ["text"]=> string(81) "Описание должно содержать от 3 до 100 символов" } } 

Как сделать что бы в массив выводил все ошибки?

Answer 1

Просматривая ваш код, увидел использование $this->errors в контексте класса. Предлагаю свой вариант решения:

/**
 * @var array $_errors
 */
private $_errors = [];
/**
 * Метод добавления новой ошибки для указанного поля.
 * @param string $field
 * @param string $message
 */
public function addError(string $field, string $message): void
{
    array_push($this->_errors[$field], $message);
}
/**
 * Проверка на существование каких-либо ошибок.
 * @return bool
 */
public function hasErrors(): bool
{
    return empty($this->_errors);
}
/**
 * Метод возвращения ошибок.
 * @return array
 */
public function getErrors(): array 
{
    return $this->_errors;
}
READ ALSO
Cookies Laravel

Cookies Laravel

Есть domain1com и sub

83
Обработка нажатия telegram кнопки?

Обработка нажатия telegram кнопки?

Создал telegram бота, поставил Webhook, все работаетСейчас пытаюсь сделать кнопки, кнопки должны обратиться к серверу и с моего сервера выполнить...

77
php enum без абстрактного класса

php enum без абстрактного класса

подскажите пожалуйста, чем плохо сделать так

83
Валидация времени ларавел

Валидация времени ларавел

Как сделать валидацию времени типа H:i ?

137