[MODX, MiniShop2] Обязательный чекбокс при оформлении заказа

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

На первый взгляд задача простая, но решение оказалось нетривиальным.

Путь поиска решения:

  1. Указываем обазательное поле у варианта доставки в настройках MiniShop2
  2. Прописывам класс input-parent для обертки инпута
  3. Если не помогло, тогда открываем assets/components/minishop2/js/web/default.js и ищем блок с указанием дефолтных классов, там должно быть что-то типа miniShop2.Order.inputParent =
  4. Прописываем указанный там класс для обертки инпута
  5. Радуемся, но не тут то было. Хоть тресни, но система не выводит ошибку.
  6. Идем снова в тот файлик JS, и ищем строку var formData = $form.serializeArray();
  7. Добавляем после этой строчки код:
        $form.find("input.required:checkbox").each(function(){
            if(!this.checked){
                formData[Object.keys(formData).length] = {"name":this.name,"value": ""}
            }
        });
        
  8. Радуемся, @#$^, по-настоящему.
    Пояснение: Прикол в том, что функция .serializeArray() Не видит неотмеченный чекбокс, и не посылает информацию о нем на сервер. Соответственно сервер не возвращает ответ типа "Эй, поле пустое!", наивный сервак сообще не знает что он должен проверять это поле. Предлагаемое решение создает элемент массива с пустым значением — чтобы сервак это увидел и поругался.

HTML и CSS для симпатичного чекбокса

    
C правилами обработки персональных данных ознакомлен

Комментарии (0)

  1. Напишите первый комментарий
*Комментарий будет опубликован после проверки модератором

[MODx] Генератор настроек MIGX

[MODx, MIGx] Документация на русском по MIGX

[MODX] Импорт и экспорт в MiniShop2. Реализация 1

[MODx] minishop2 tips

[JS] Маска для ввода телефона +7(___)___-__-__

[MODx, miniShop2] Генерация YML для выгрузки в маркет

Как включить HTTPS (SSL) в MODX - Подробная инструкция

[MODx] Подсказки по API

[OpenCart] Вывести на главную все категории с картинками

[MODx, MIGX] Примеры использования

[MODx] Сайт на обслуживании (выключить сайт)

Универсальная форма обратной связи — feedBackForm

[MODx, Gallery] Галерея. Вывести обложки альбомов и фотографии

[PHP, JSON] Пример перевода с помощью Yandex Translate API

Расширение свойств товаров minishop2

[Opencart] Вернуть английский язык, если вы его удалили

[OpenCart] Вывести модуль напрямую через контроллер

[MODx, Quip] Более рабочий вариант.

[MODX, MIGX] Вывести getImageList только если он не пустой

[MODX, MIGX] Тип поля "Список ресурсов" (resourcelist) с ограничением по родителю (parents)

[MODx] Создать источник файлов

Красивое адаптивное меню под pdoMenu

[MODx] Вывод tv-параметров в формате [название TV] - [значение TV]

[PHP] Простое логирование

[MODX] Вывести список всех опций MiniShop2

Все записи