@Kurper

Как вывести ошибки валидации для нескольких записей выбранных чекбоксом?

Всем привет. Возникла проблема с выводом ошибок для нескольких записей.

У меня есть GridView где вывожу таблицу со всеми пользователями, я могу выбрать чекбоксом несколько пользователей и сменить им статус по нажатию одной кнопки при определенном условии (здесь идет валидации), если же какие-то выбранные пользователи не прошли валидацию, то ничего не изменяю и хочу вывести сверху ошибки в таком виде:
юзер1: дата не верна
...
юзер2: нет имени

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

...
тут получаю список всех пользователей $users выбранных чекбоксом
...
foreach ($users as $key => $user) {
    $user->validate();

    if ($user->hasErrors()) {
        $result = [];
        foreach ($model->getErrors() as $attribute => $errors) {
            $id = $user->id;
            $result[Html::getInputId($model, $attribute)] = $errors;
        }
    }

    if ($model->save()) {
        $saved = true;
    }
}
if ($saved) {
    Yii::$app->session->addFlash('success', 'Статусы были изменены');
} else {
    return $this->asJson(['id' => $id, 'validation' => $result]);
}
  • Вопрос задан
  • 81 просмотр
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Вам надо получить сразу все модели, которые Вы хотите изменить.
Здесь у Вас массив id-шников.
$usersId = Yii::$app->request->post('items', []);
Получить сразу все можно так
$usersId = Yii::$app->request->post('items', []);
$users = Users::findAll($usersId);

Теперь в $users у Вас будут все модели, которые Вы изменяете.
Валидация будет приблизительно такой
// для каждой отдельной модели передаёте её массив ошибок
if ($user->hasErrors()) {
   $result = [];
   $result[Html::getInputId($model, $attribute)] = $model->getErrors();
}

И уже в виде разбираете многомерный массив и выводите ошибки.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы