new

smsValidate

Валидация поля телефона через СМС при отправке AjaxForm+FormIt
Бесплатно
Загрузите дополнение из админки вашего сайта.
Как загрузить?
Автор дополнения
mg15
Пакетов
1
Закачек
6
Автор дополнения
Пакетов
1
Закачек
6
Версия 1.0.7-beta
Дата выпуска 17.11.2024
Загрузки 6
Просмотры 187
Внимание, этот компонент требует версию PHP 7.0 или выше! Если ваш сайт использует PHP ниже требуемого, установка этого дополнения может его сломать.
Внимание, этот компонент требует версию MODX не ниже 2.7 !
Компонент работает при наличии установленного AjaxForm, должен быть подключен jquery. Версия php 7+, версия MODX не ниже 2.7 (на тройке не тестировал). В ходе установки добавляется шаблон с примером вызова AjaxForm, чанк с примером разметки формы и создаются кастомный хук и валидатор FormIt: первый подключает отдельный файл с jquery-кодом на событие af_complete, второй подключает класс, который «рулит» логикой верификации формы по СМС.

Основные преимущества

1. Невмешательство в ядро AjaxForm
2. Простота интеграции в действующую форму
3. Интервал между отправкой повторного СМС для предотвращения скликивания баланса.
4. Наличие тестового режима
5. Компонент срабатывает только в случае заполненных обязательных полей формы
6. Возможность добавления новых классов СМС-провайдера

Все классы СМС-провайдеров должны находиться в директории /core/components/smsvalidate/model/smsvalidate/handlers/. В исходном варианте у компонента есть три класса для отправки СМС:
1. smsRu — файл smsru.class.php (сервис sms.ru)
2. intisteleSms — файл intistelesms.class.php (сервис intistele.com)
3. smscRu — файл smscru.class.php (сервис smsc.ru)

По умолчанию выбран класс smsRu. Данные доступа по API нужно вписать в конфиг класса в конструкторе самостоятельно.

Кастомные классы СМС-провайдеров

Для другого СМС-провайдера можно добавить свой класс: необходимо, чтобы название файла с классом было с суффиксом .class.php и чтобы класс был наследован от интерфейса sendSmsInterface, в котором заданы обязательные методы __construct() и send().

  1. В метод construct() должен быть передан объект класса modX.
  2. В метод send() передаются номер телефона и проверочный код, метод возвращает true в случае успешной отправки СМС, либо false.

Настройки компонента

  • smsvalidate.sms_time_limit — время до повторной отправки СМС (в секундах) — если пусто, выставляется 30 секунд по умолчанию.
  • smsvalidate.sms_test — включение тестового режима — если выбрать 'да', то СМС на введенный в форме номер телефона не отправляется, а сгенерированный код выводится на экран
  • smsvalidate.sms_button_repeat_class — класс кнопки для повторной отправки СМС — кнопка для повторной отправки СМС в форме генерируется компонентом автоматически, есть возможность задать ей свой класс для css-стилизации
  • smsvalidate.sms_code_length — длина СМС-кода (не более 10)
  • smsvalidate.sms_handler_class — класс СМС-обработчика — вводится название класса СМС провайдера, по умолчанию выбирается smsRu.


Быстрый старт

1. Установить компонент из транспортного пакета.
2. В коде вызова сниппета AjaxForm добавить параметры:
'renderHooks' => 'smsValidateInit',
'customValidators' => 'smsValidate',

в параметр 'validate' добавить обращение к СМС-валидатору
'sms_code:smsValidate=^phone^'
(где 'phone — имя поля для ввода телефона)

3. В коде чанка с формой добавить блок с разметкой поля для валидации по СМС. Пример в чанке smsvalidate_form. Классы разметки с префиксом js служебные, их нельзя удалять или менять, также нельзя удалять инпуты и спан с классом error_sms_code из этого контейнера. Соблюдая эти условия, можно без проблем стилизовать контейнер доп.классами под текущий дизайн сайта.

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

1.0.7-beta

  • Рефакторинг js-кода для разделения форм

1.0.6-beta

  • Добавление класса smscRu, проверка в классе intisteleSms формата номера, так как начинающееся с 8 сервис не пропускает

1.0.5-beta

  • Разделение сессий для разных форм

1.0.4-beta

  • Добавление настройки smsvalidate.sms_code_length, рефакторинг нейминга

1.0.2-beta

  • Добавил файлы docs

1.0.1-beta

  • Первый релиз

Последние обсуждения в сообществе MODX.pro