MiniShop2 и греческий язык

В форме заказа не проходят валидацию греческие символы (например Σχήμα κουτιού και)

На счет php не знаю, но js точно не пропускает:




Не могу найти в default.js блок, который отвечает за валидацию.
Игорь Терентьев
05 сентября 2017, 09:06
modx.pro
1
1 692
0

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

Александр
06 сентября 2017, 10:17
0
а в параметре оплаты/доставки валидация данных полей отключена?
    Игорь Терентьев
    06 сентября 2017, 10:22
    0
    Отмечено как обязательное для заполнения, но MiniShop видит его как пустое, если введены греческие буквы.
      Александр
      06 сентября 2017, 10:42
      0
      Валидация проходит в msorderhandler.class.
      Есть 2 эвента: msOnBeforeValidateOrderValue до валидации и msOnValidateOrderValue — после валидации.
      Сейчас receiver пытается расставить символы согласно русскому и англ языку. (Имя)
      Вам нужно попробовать на эвенте отлавливать значение, просто проверять его наличие и ставить валидацию в true
        Игорь Терентьев
        06 сентября 2017, 10:58
        0
        Спасибо!
          Игорь Терентьев
          07 сентября 2017, 21:35
          +1
          В итоге расширил класс:
          <?php
          class myOrderHandler extends msOrderHandler {
              public function validate($key, $value) {
                  switch ($key) {
                      case 'receiver':
                          // убираем регулярку и просто проверяем чтобы поле не было пустым
                          if (empty($value)) {
                              $value = false;
                          }
                      break;
                      // Конечно, также можно переопределить и другие валидаторы
              
                      // Если прислано поле, которого тут нет - отправляем в дефолтный класс
                      default:
                          return parent::validate($key, $value);
                  }
                  if ($value === false) {
                      $value = '';
                  }
              
                  return $value;
              }
          }
    Константин Ильин
    29 ноября 2022, 19:37
    0
    Ребят, подскажите по событиям msOnBeforeValidateOrderValue и msOnValidateOrderValue

    Задача такая. Есть скрытое пол $typepayer значения либо 1 либо 2. Если 2 то нужно проверить заполненость ИНН
    switch ($modx->event->name) {
        case "msOnValidateOrderValue":
            if ($key === 'typepayer') {
                $data = $order->get();
                
                // Если Юр лицо(val = 2) проверяем заполненость ИНН
                if($data['typepayer'] == 2 && empty($data['inn'])){
                    
                    $modx->log(1, print_r($data, 1));
                    $modx->log(1, print_r($key, 1)); 
                    //$modx->event->returnedValues['value'] = false;
                    //$modx->event->output("Yыфвфы");    
                    //return INN false
                }
            }
        break;
    }
    Никак не соображу как вернуть error для поля инн, чтобы оно загорелось красным, в документации ничего не нашел про ответ плагинов и верно ли я выбрал событие под такую задачу?
    по логике нужно вернуть ключ поля с false, но что найти не могу и понять…
    Не нужно добавлять поле ИНН в где-то в msOnBeforeAddToOrder или msOnAddToOrder?
      Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
      7