Заказ minishop2

Здравствуйте! Такой вопрос, хочу сделать дополнительную проверку телефона в заказе. Проверку уже сделал на js но как запретить отправку заказа?
$('.orderSubmit').click(function(){
                        var input;
                        input = $('input.bfh-phone').val();
                        if(input.length < 17)
                        {
                            
                        }
                    });
Дмитрий
16 февраля 2018, 17:29
modx.pro
1 553
0

Комментарии: 6

Михаил
16 февраля 2018, 20:42
0
очень подробно описано в документации
    Дмитрий
    16 февраля 2018, 22:05
    0
    Я видел, и если честно не очень помогло)
      Михаил
      17 февраля 2018, 07:58
      1
      +1
      Пример
      Давайте подключим свой класс заказа и переопределим в нём проверку 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. Точно также мы можем добавить\изменить проверку и других полей, или вообще полностью поменять весь ход оформления заказа.

      Вот и все что Вам надо
        Дмитрий
        17 февраля 2018, 10:38
        0
        Это надо редактировать в коде сниппета?
          Виталий Батушев
          17 февраля 2018, 11:07
          0
          Класс myOrderHandler расширяет класс msOrderHandler, то изменяет или дополняет его функциональность. Создаешь файл с классом согласно документации. После чего указываешь его в качестве класса обработчика задания — это тебе нужно в системные настройки.
            Дмитрий
            17 февраля 2018, 11:08
            0
            Понял, спасибо)
    Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
    6