Заказ minishop2
Здравствуйте! Такой вопрос, хочу сделать дополнительную проверку телефона в заказе. Проверку уже сделал на js но как запретить отправку заказа?
$('.orderSubmit').click(function(){
var input;
input = $('input.bfh-phone').val();
if(input.length < 17)
{
}
});
Комментарии: 6
очень подробно описано в документации
Я видел, и если честно не очень помогло)
Пример
Давайте подключим свой класс заказа и переопределим в нём проверку email.
Создаём и подключаем свой расширяющий класс. Затем пишем в нём
Теперь указываем новый класс myOrderHandler в системной настройке ms2_order_handler_class. Если что то пойдёт не так, то всегда можно вернуть старый класс.
После этого ms2 уже использует ваш класс для работы, а тот, в свою очередь наследует свои методы от стандартного.
Теперь мы можем изменить любой метод создания заказа, чем и пользуемся — меняем msOrderHandler::validate().
Вот и все что Вам надо
Давайте подключим свой класс заказа и переопределим в нём проверку email.
Создаём и подключаем свой расширяющий класс. Затем пишем в нём
<?php
class myOrderHandler extends msOrderHandler {
}
Это мы унаследовали оригинальный класс оформления заказа.Теперь указываем новый класс myOrderHandler в системной настройке ms2_order_handler_class. Если что то пойдёт не так, то всегда можно вернуть старый класс.
После этого ms2 уже использует ваш класс для работы, а тот, в свою очередь наследует свои методы от стандартного.
Теперь мы можем изменить любой метод создания заказа, чем и пользуемся — меняем msOrderHandler::validate().
<?php
class myOrderHandler extends msOrderHandler {
public function validate($key, $value) {
switch ($key) {
case 'email':
// меняем filter_var() на простую регулярку
// $value = filter_var($value, FILTER_VALIDATE_EMAIL) ? $value : @$this->order[$key];
$value = preg_match('/.+@.+\..+/i', $value) ? trim($value) : @$this->order[$key];
break;
// Конечно, также можно переопределить и другие валидаторы
// Если прислано поле, которого тут нет - отправляем в дефолтный класс
default:
return parent::validate($key, $value);
}
if ($value === false) {
$value = '';
}
return $value;
}
}
Вот и всё. Мы унаследовали метод и изменили проверку email. Точно также мы можем добавить\изменить проверку и других полей, или вообще полностью поменять весь ход оформления заказа.Вот и все что Вам надо
Это надо редактировать в коде сниппета?
Класс myOrderHandler расширяет класс msOrderHandler, то изменяет или дополняет его функциональность. Создаешь файл с классом согласно документации. После чего указываешь его в качестве класса обработчика задания — это тебе нужно в системные настройки.
Понял, спасибо)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.