В первой части мы работали над добавлением поля для верификации номера телефона.
Продолжим нашу работу и начнём с написания JS функции, позволяющей добавить кнопку отправки сообщения на номер телефона. Для этого в файле скриптов пропишем строчку:
$('input[name="phone_e"]').parent().parent().find('.form-control-comment').html('Кнопка');
Поздравляем! Кнопка добавлена, теперь стоит перейти к обработчику и отправке SMS. В начале переопределим контролёр, по пути /override/controllers/front/, создадим файл AuthController.php и в нём воспользуемся новым методом protected function phoneVerification().
В принципе, тут нет ничего сложно. В дополнительных материалах выложим этот класс, а сейчас просто кратко опишем методы:
Метод genn($length) генерирует случайное число и принимает одно свойство - длинна кода для отправки по SMS.
Метод showDate($time) принимает время записанное в Cookie в момент первой отправки и служит для определения временного интервала, пройденного с момента первой отправки SMS. Грубо говоря, не позволяет пользователю отправлять SMS постоянно, а ставит ограничение по отправке на определённый интервал времени.
Для обращения к необходимому url нам нужно в методе phoneVerification() сделать проверку на GET параметр phone_verification = 1 и action=phone
if (Tools::getIsset('phone_verification') && Tools::getValue('action') == 'phone')
Теперь мы можем обращаться по url /login?phone_verification=1&action=phone и производить действия для отправки SMS и верификации пользователя.
Чтобы не перезагружать нашу страницу, напишем скрипт js для отправки данных, выложим небольшой фрагмент для наглядности:
$.ajax({
type: "POST",
headers: {"cache-control": "no-cache"},
async: true,
cache: false,
url: '/login?phone_verification=1&action=phone',
data:'phone='+$('input[name="phone_e"]').val(),
dataType: "json",
success: function(response) {}
});
Принцип такой:
1) Отправляем телефон
2) Блокируем кнопку
3) Показываем поле для ввода кода из SMS
4) Отправляем на сравнение
На этом вторая часть подошла к своему логическому завершению, если у Вас всё получилось, то смеле переходите к третей части. Возникла проблема - обращайтесь!