Не хочет работать валидация в msOrder
        Всем добрый день. 
У меня возникла проблема с работой сниппета msOrder — он отправляет информацию с пустыми ячейками, не валидируя вообще ничего из контактной информации.
чанк написал по образу и подобию tpl.msOrder
Сама корзина со всеми сниппетами выглядет вот так:
Подскажите, что я сделал не так?
UPD ещё заметил странность — в консоли payments.length is not defined. Ошибка в default.js minishop2. Менял версии jquery — не помогло. Убирал свои скрипты — не помогло. Обновлял minishop2 — не помогло…
В принципе понятно. Немного покопавшись в дебаггере и дефорлтном чанке я выяснил, что блок payments и delivery обязательно должен присутствовать в разметке чанка, что вынудило меня к костылю (скрытые поля с дефолтными значениями). Но это не суть — главное, что работает.
    
    
                                                                                
            У меня возникла проблема с работой сниппета 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 обязательно должен присутствовать в разметке чанка, что вынудило меня к костылю (скрытые поля с дефолтными значениями). Но это не суть — главное, что работает.
Комментарии: 14
                Хз таже проблема и у меня ни одно ни одно поле не валидируется кроме e-mail и как добавить валидацию тоже не понятно… Ни мануалом ни чё нет найти не возможно… Везде тока размышления и куча воды((            
                    
                А я исправил. Последний абзац — 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
                    Как это относится к валидации? Очень просто. Если в javascript происходит ошибка, а она происходит, так как payments.length действительно undefined без разметки payments (способа оплаты) — отваливается весь модуль. А валидация (действительно грамотная валидация) полей должна писаться в javascript, ещё и с regexp, желательно, чего нет в скрипте Василия. В таких случаях, если время позволяет, я интегрирую свой ajax-модуль. Он по regexp умеет проверять номер и email:
github.com/WebKieth/Black-UI/blob/master/src/_modules/ajaxform/ajaxform.js
                У родителя инпута обязателен класс form-group            
                    
                Спасибо, следующий магаз тоже буду на miniShop делать — инфа полезная, фактор не самый очевидный.            
                    
                Ошибочка, просто решал сейчас такую же проблему, если способы оплаты не выведены, то валидация не работает, решил задачу выводом в display: none            
                    
                да, в принципе то, о чём я и писал. 
PS позовите кто-нибудь Василия!
Нужно рассказать главному инженеру компонента. Всё таки многие магазины начинают работать сначала со стандартных оплат наличными и при самовывозе товара. Конечно delivery и payments — полезные поля, но я считаю, они должны идти в качестве дополнения, а не обязательного пункта.
А вообще form-group — это ведь говностраповский стилевой класс. Ты уверен, что он используется для javascript в default.js?
                    PS позовите кто-нибудь Василия!
Нужно рассказать главному инженеру компонента. Всё таки многие магазины начинают работать сначала со стандартных оплат наличными и при самовывозе товара. Конечно delivery и payments — полезные поля, но я считаю, они должны идти в качестве дополнения, а не обязательного пункта.
А вообще form-group — это ведь говностраповский стилевой класс. Ты уверен, что он используется для javascript в default.js?
                Ох, если бы это было единственным косяком MS2, Василий прекрасно знает обо всех косяках, все, что он говорит «Компонент бесплатный, хотите исправлений — присылайте пул реквест на гитхаб»
+ тут еще многое завязано на том, что под MS2 написано много готовых решений и смена логики работы может поломать некоторые из них
Если хочешь работать с MS2, заготавливай арсенал костылей )
Чего только стоит то, что при смене способа доставки в админке не пересчитывается итоговая сумма
И таких косяков можно еще с десяток насчитать
                    + тут еще многое завязано на том, что под MS2 написано много готовых решений и смена логики работы может поломать некоторые из них
Если хочешь работать с MS2, заготавливай арсенал костылей )
Чего только стоит то, что при смене способа доставки в админке не пересчитывается итоговая сумма
И таких косяков можно еще с десяток насчитать
Если хочешь работать с MS2, заготавливай арсенал костылей )Напиши свой идеальный магазин — никто за руки не держит.
Я вот недавно только сделал modstore.pro и как-то не столкнулся с десятками косяков. Видимо, что-то не так делал.
Чего только стоит то, что при смене способа доставки в админке не пересчитывается итоговая суммаПо какому алгоритму она должна пересчитываться. Какой у тебя класс доставки на фронтенде используется? Может ты там мышкой указал район города и считать нужно именно для него? Как это всё предусмотреть в админке? Никак. Потому и не пересчитывается.
На всякий случай — лично меня (лично меня) в ms2 сейчас устраивает абсолютно всё и я могу написать с его помощью любой магазин. Поэтому ждать, что я брошу свои дела и побегу его улучшать для кого-то еще, просто неразумно.
                Так никто же не говорит что магазин плохой, но это не отменяет того факта, что множество костылей нужно дописывать, не воспринимайте все критически :)
Это пока что единственная нормальная реализация магазина для MODX, шопкипер по скорости и удобству и рядом не стоял, к тому же там дописывать приходится гораздо больше :)
                    По какому алгоритму она должна пересчитываться. Какой у тебя класс доставки на фронтенде используется? Может ты там мышкой указал район города и считать нужно именно для него? Как это всё предусмотреть в админке? Никак. Потому и не пересчитывается.Я про стандартный класс и про стандартные поля стоимости доставки, все таки для большинства магазинов достаточно стандартного класса с добавлением обновления итоговой цены
Это пока что единственная нормальная реализация магазина для MODX, шопкипер по скорости и удобству и рядом не стоял, к тому же там дописывать приходится гораздо больше :)
                Василий, за miniShop2 суперогромный вам респект и уважуха!
Когда я впервые писал вёрстку для miniShop2 я думал, что всё будет гораздо хуже ожидаемого и даже заготовил свои счётчики товаров и цен в карточках и корзине. Как оказалось, это уже было в default.js и мне даже не стоило запариваться. Поля delivery и payments — единственное что вызвало проблему, да и то я быстро справился с ней. Достаточно было помучать devTools дебаггер. С js я на «ты», а код в default.js отлично составлен и вполне читабелен.
В сравнении с тем баттхёртом, что вызывали у меня ранее магазы на birix, prestaShop и eCommerce — miniShop2 всем им утирает нос как в лёгкости настроек, так и в производительности. Спасибо вам огромное.
                    Когда я впервые писал вёрстку для miniShop2 я думал, что всё будет гораздо хуже ожидаемого и даже заготовил свои счётчики товаров и цен в карточках и корзине. Как оказалось, это уже было в default.js и мне даже не стоило запариваться. Поля delivery и payments — единственное что вызвало проблему, да и то я быстро справился с ней. Достаточно было помучать devTools дебаггер. С js я на «ты», а код в default.js отлично составлен и вполне читабелен.
В сравнении с тем баттхёртом, что вызывали у меня ранее магазы на birix, prestaShop и eCommerce — miniShop2 всем им утирает нос как в лёгкости настроек, так и в производительности. Спасибо вам огромное.
Спасибо вам огромное.Не за что.
Кстати говоря — текущий javascript писал не я. Нужно благодарить вот этого человека. Отличный пример работы Open Source.
                Не используется, я ж сразу написал, что ошибся)            
                    
                github.com/bezumkin/miniShop2/blob/master/assets/components/minishop2/js/web/default.js
Что-то я тут не нахожу поиском никаких form-group.
                    Что-то я тут не нахожу поиском никаких form-group.
                Я уже написал что ошибся)            
                    
                            Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.