-
Notifications
You must be signed in to change notification settings - Fork 16
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Processor: isOrderStarted() #151
Comments
Не нужно обращаться к апи в OnRegisterDelivery. Или кэшировать обращения, если по-другому никак. |
А в каком событии можно? Чтобы перерисовывать форму согласно изменившимся данным? Я просто не нашел ничего в доках по этому поводу. Там в событии OnRegisterDelivery и массиве $rows добавляется свой вариант и у него есть markup и туда можно добавить дополнительный контент (мне показалось что туда зайдет форма от сервиса из 6 полей), которую можно менять еще и через браузер при помощи, грубо Кеширование в принципе да, вариант, но не в этом случае, когда почти на любое действие в форме или в корзине нужно перезапрашивать АПИ за новым перерасчетом и перерисовкой формы. У меня пока один вариант, воткнуть костыль [[Order? &isOrderstarted= |
Перерисовывать форму по данным нужно в OnOrderRawDataChanged |
Если форма в OnRegisterDelivery рисуется, то в OnOrderRawDataChanged нет к ней доступа в любом случае. Все что есть в |
Есть один нюанс. Метод определяет что оформление заказа начато по наличию инициированной сессии, на сколько я понял. И тут возникает момент.
Допустим если у нас есть 2 страницы (корзина/форма заказа). Очевидно, что находясь на странице оформления заказа (там где лежит форма order) - он начат. Вопрос, начато ли оформление заказа если пользователь зашел один раз на форму заказа, что-то там сделал, сессия создалась, метод isOrderStarted() отдал =true, затем вернулся на страницу корзины и удалил часть товаров или изменил количество, казалось бы ответ - ДА, на форму заходил ведь, что-то нажал, просто потом отошел в сортир/корзину/страницу с котами =).
Но вот момент, если сделать плагин и в событии "OnRegisterDelivery" описать, как пример, получение данных от апи сервиса, то каждый раз, когда пользователь нажимает +- или меняет что-то на странице корзины, событие "OnRegisterDelivery" отрабатывает и данные запрашиваются даже когда формы не видно. Исходя из названия события, он должно отрабатывать когда мы добавляем способы доставки, по идее находясь на странице, где был вызван "Order".
Если конечно корзина на одной странице с формой, вопрос отпадает.
Можно ли методами Commerce определить, что пользователь в процессе оформления и в форме? Я изначально попробовал ($modx->documentIdentifier !== $params['order_page_id']), грубо, но ajax запросы проходят через 404 я так понимаю и там не получается в "OnRegisterDelivery" определить id страницы. Ожидаю именно в "OnRegisterDelivery", чтобы просто заблокировать запросы по какому-либо условию что юзверь не в корзине или где-либо еще. Каждый раз просто плюс нажал и пошел спам в сервис, при этом изменение данных корзины тоже тормозить начинает из-за ожидания ответа.
The text was updated successfully, but these errors were encountered: