Бесплатно
Загрузите дополнение из админки вашего сайта.
Как загрузить?
Как загрузить?
Внимание, этот компонент несовместим с MODX 3.
Компонент работает при наличии установленного 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. Установить компонент из транспортного пакета.
2. В коде вызова сниппета AjaxForm добавить параметры:
в параметр 'validate' добавить обращение к СМС-валидатору
3. В коде чанка с формой добавить блок с разметкой поля для валидации по СМС. Пример в чанке smsvalidate_form. Классы разметки с префиксом js служебные, их нельзя удалять или менять, также нельзя удалять инпуты и спан с классом error_sms_code из этого контейнера. Соблюдая эти условия, можно без проблем стилизовать контейнер доп.классами под текущий дизайн сайта.
Как демо-вариант, можно подключить установленный из пакета шаблон на ресурс, по умолчанию включен тестовый режим, когда код для СМС выводится на экран и в лог админки.
Основные преимущества
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().
- В метод construct() должен быть передан объект класса modX.
- В метод 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