Вы здесь

[Решение] Ajax + Select muliple - Сделан недопустимый выбор

Всем привет.

Недавно была замечена "ошибка" в работе стандартного списка drupal 7 с возможностью выбора нескольких вариантов + использования ajax.

Обычный пример
типичная форма добавления материала с полями"Список" (возможность выбрать несколько вариантов, не обязательно для заполнения);
Ajax мульти-загрузка изображений (Multiupload Filefield Widget+Multiupload Imagefield Widget xandeadx).

Теперь пытаемся залить файлы не выбрав значения в первом поле (списке) - на выходе получается ошибка "Сделан недопустимый выбор. Пожалуйста, обратитесь к администратору сайта.", кроме 1-го файла ни один из файлов не загрузится (в форме мы их увидим, но они окажутся во временной папке и не запишутся в базу данных).

Ошибка в том, что в данном случае Drupal из select передает значение "null", не пустое значение, а именно "null", что в итоге приводит к ошибке на стадии валидации. И как оказалось, проблема с 2012 года и никто её до сих пор адекватно не решил (issue на d.org были, все закрыты) и она перетекает из релиза к релизу.

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

Решил срочным, вероятнее всего, колхозным, но рабочим и без лишних правок способом. Модуль описанный выше, только функцию element_select_validate заменить на:

if (isset($element['#value']['null'])) unset($element['#value']['null']);

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

За помощь спасибо Виктору.

3
1
29.12.2015 - 04:14

Комментарии

Аватар пользователя Nikit Khaner
Nikit Khaner – 29.12.2015 - 11:46

ну может это в issue того модуля?