Не хочет работать валидация в 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.
Я уже написал что ошибся)
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.