Не хочет работать валидация в msOrder

Всем добрый день.
У меня возникла проблема с работой сниппета msOrder — он отправляет информацию с пустыми ячейками, не валидируя вообще ничего из контактной информации.
чанк написал по образу и подобию tpl.msOrder
<div class="cart__result">
              <div class="cart__fullcost"><span class="fullCostCell"></span> р</div>
              <div class="cart__print"><span>Распечатать</span></div>
              <form method='post' class="cart__datasend form ms2_form" id="msOrder">
                {foreach ['receiver','phone','email'] as $field}
                  <input name="{$field}" id="{$field}" value="{$form[$field]}" placeholder="{('ms2_frontend_' ~ $field) | lexicon}" class="form__input form-control{($field in list $errors) ? ' error' : ''}">
                {/foreach}
                <button name="ms2_action" value="order/submit" type="submit" class="form__input form__input--submit ms2_link">
                  Отправить заявку
                </button>
              </form>
            </div>

Сама корзина со всеми сниппетами выглядет вот так:
<div class="cart">
          <div class="cart__title">Ваша заявка</div>
          <div class="cart__box">
            [[!msCart?
              &tpl=`cart__item`
            ]]
          </div>
          <pre>[[!msOrder?tpl=``]]</pre>
          [[!msOrder?
            &tpl=`cart__result`
            &delivery=`1`
          ]]
          [[!msGetOrder?
            &tpl=`cart__complete`
          ]]
        </div>
Все классы по аналогии с дефолтным tpl, но по submit форма отправляется сразу без валидации. Настройки miniShop проверял — в качестве обязательных указаны reciever, email.
Подскажите, что я сделал не так?

UPD ещё заметил странность — в консоли payments.length is not defined. Ошибка в default.js minishop2. Менял версии jquery — не помогло. Убирал свои скрипты — не помогло. Обновлял minishop2 — не помогло…

В принципе понятно. Немного покопавшись в дебаггере и дефорлтном чанке я выяснил, что блок payments и delivery обязательно должен присутствовать в разметке чанка, что вынудило меня к костылю (скрытые поля с дефолтными значениями). Но это не суть — главное, что работает.
Никита
03 апреля 2017, 12:06
modx.pro
2 709
0

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

Михаил
07 апреля 2017, 11:07
0
Хз таже проблема и у меня ни одно ни одно поле не валидируется кроме e-mail и как добавить валидацию тоже не понятно… Ни мануалом ни чё нет найти не возможно… Везде тока размышления и куча воды((
    Никита
    07 апреля 2017, 11:23
    0
    А я исправил. Последний абзац — UPD. Нужно крч по хорошему перебирать javascript и msOrder минишопа на isset и if(!undefined), чтоб код мог понимать — если полей ввода адреса и способа оплаты нет — брать базовые значения. Сейчас у меня времени с моим проектом не было на это — надо было быстро его деплоить, поэтому я решил не лезть в скрипты, а просто вальнуть нужные поля ввода с дефолтными величинами под display none. Костыль, но работает. На будущее буду знать.
    Как это относится к валидации? Очень просто. Если в javascript происходит ошибка, а она происходит, так как payments.length действительно undefined без разметки payments (способа оплаты) — отваливается весь модуль. А валидация (действительно грамотная валидация) полей должна писаться в javascript, ещё и с regexp, желательно, чего нет в скрипте Василия. В таких случаях, если время позволяет, я интегрирую свой ajax-модуль. Он по regexp умеет проверять номер и email:
    github.com/WebKieth/Black-UI/blob/master/src/_modules/ajaxform/ajaxform.js
    Pavel Zarubin
    01 июня 2017, 11:28
    +1
    У родителя инпута обязателен класс form-group
      Никита
      01 июня 2017, 14:14
      0
      Спасибо, следующий магаз тоже буду на miniShop делать — инфа полезная, фактор не самый очевидный.
        Pavel Zarubin
        01 июня 2017, 14:16
        0
        Ошибочка, просто решал сейчас такую же проблему, если способы оплаты не выведены, то валидация не работает, решил задачу выводом в display: none
          Никита
          01 июня 2017, 14:22
          0
          да, в принципе то, о чём я и писал.
          PS позовите кто-нибудь Василия!
          Нужно рассказать главному инженеру компонента. Всё таки многие магазины начинают работать сначала со стандартных оплат наличными и при самовывозе товара. Конечно delivery и payments — полезные поля, но я считаю, они должны идти в качестве дополнения, а не обязательного пункта.

          А вообще form-group — это ведь говностраповский стилевой класс. Ты уверен, что он используется для javascript в default.js?
            Pavel Zarubin
            01 июня 2017, 14:26
            0
            Ох, если бы это было единственным косяком MS2, Василий прекрасно знает обо всех косяках, все, что он говорит «Компонент бесплатный, хотите исправлений — присылайте пул реквест на гитхаб»
            + тут еще многое завязано на том, что под MS2 написано много готовых решений и смена логики работы может поломать некоторые из них
            Если хочешь работать с MS2, заготавливай арсенал костылей )
            Чего только стоит то, что при смене способа доставки в админке не пересчитывается итоговая сумма
            И таких косяков можно еще с десяток насчитать
              Василий Наумкин
              01 июня 2017, 14:43
              +2
              Если хочешь работать с MS2, заготавливай арсенал костылей )
              Напиши свой идеальный магазин — никто за руки не держит.

              Я вот недавно только сделал modstore.pro и как-то не столкнулся с десятками косяков. Видимо, что-то не так делал.

              Чего только стоит то, что при смене способа доставки в админке не пересчитывается итоговая сумма
              По какому алгоритму она должна пересчитываться. Какой у тебя класс доставки на фронтенде используется? Может ты там мышкой указал район города и считать нужно именно для него? Как это всё предусмотреть в админке? Никак. Потому и не пересчитывается.

              На всякий случай — лично меня (лично меня) в ms2 сейчас устраивает абсолютно всё и я могу написать с его помощью любой магазин. Поэтому ждать, что я брошу свои дела и побегу его улучшать для кого-то еще, просто неразумно.
                Pavel Zarubin
                01 июня 2017, 14:53
                0
                Так никто же не говорит что магазин плохой, но это не отменяет того факта, что множество костылей нужно дописывать, не воспринимайте все критически :)
                По какому алгоритму она должна пересчитываться. Какой у тебя класс доставки на фронтенде используется? Может ты там мышкой указал район города и считать нужно именно для него? Как это всё предусмотреть в админке? Никак. Потому и не пересчитывается.
                Я про стандартный класс и про стандартные поля стоимости доставки, все таки для большинства магазинов достаточно стандартного класса с добавлением обновления итоговой цены
                Это пока что единственная нормальная реализация магазина для MODX, шопкипер по скорости и удобству и рядом не стоял, к тому же там дописывать приходится гораздо больше :)
                  Никита
                  01 июня 2017, 15:21
                  +1
                  Василий, за miniShop2 суперогромный вам респект и уважуха!
                  Когда я впервые писал вёрстку для miniShop2 я думал, что всё будет гораздо хуже ожидаемого и даже заготовил свои счётчики товаров и цен в карточках и корзине. Как оказалось, это уже было в default.js и мне даже не стоило запариваться. Поля delivery и payments — единственное что вызвало проблему, да и то я быстро справился с ней. Достаточно было помучать devTools дебаггер. С js я на «ты», а код в default.js отлично составлен и вполне читабелен.
                  В сравнении с тем баттхёртом, что вызывали у меня ранее магазы на birix, prestaShop и eCommerce — miniShop2 всем им утирает нос как в лёгкости настроек, так и в производительности. Спасибо вам огромное.
              Pavel Zarubin
              01 июня 2017, 14:27
              0
              Не используется, я ж сразу написал, что ошибся)
          Василий Наумкин
          01 июня 2017, 14:39
          0
          github.com/bezumkin/miniShop2/blob/master/assets/components/minishop2/js/web/default.js
          Что-то я тут не нахожу поиском никаких form-group.
            Pavel Zarubin
            01 июня 2017, 14:40
            0
            Я уже написал что ошибся)
          Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
          14