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