Всего 123 792 комментария

Артур Шевченко
01 февраля 2023, 20:29
0
Дело в том, что метод status() не запрашивает ничего у сервера, он обрабатывает ответ. Ну и всё что ты описал в качестве кейса и так работает. Смотри, когда ты что-то меняешь в корзине на фронте, тебе надо эти изменения передать на сервер, ты триггеришь метод change, который после получения ответа сервера, дергает метод status. И да, Коля сказал чистую правду, черновой вариант динамической корзины готов, надо протестировать как ведут себя опции при изменении в корзине, если до выходных будет время и желание напиши мне в телегу, дам доступы на сайт, где развёрнут пробник потестируешь.
Николай Савин
01 февраля 2023, 19:20
0
Написать твое видение кода, протестировать его, убедиться в работоспособности и затем прислать его на github в виде PR
С большой вероятность он после некоторой оптимизации будет влит в ядро

За деталями общайся в наш чат.
Семён Кудрявцев
01 февраля 2023, 19:19
+1
Не обещаю очень большую активность, но точно помогу с тестированием
Семён Кудрявцев
01 февраля 2023, 19:17
0
Что мне для этого нужно сделать?
Семён Кудрявцев
01 февраля 2023, 19:17
+1
Круто, могу помочь протестить
Николай Савин
01 февраля 2023, 19:17
+1
Семен — присоединяйся лучше к команде разработки и сделай это ))
Мир тебя не забудет
Семён Кудрявцев
01 февраля 2023, 19:15
0
Для большей универсальности я бы ещё вынес всю работу по изменению html из метода status (js класс корзины)
в какой-нибудь отдельный метот, типа — applyHTMLChanges или лучше renderCart, так метод status будет чистым — отвечать только за получение данных актуальной корзины.
Николай Савин
01 февраля 2023, 19:12
+2
Так мы это уже почти сделали. Уже даже прототип есть.
Будет полностью динамичная обновляемая целиком корзина. При чем их может быть несколько на странице со своими чанками.
В 4.1 включить не успели, так как мало протестировано.
Семён Кудрявцев
01 февраля 2023, 19:06
+1
Сегодня был в работе магазин, в котором корзина и оформление — разные страницы.
Есть несколько компонентов, которые так или иначе пересчитывают корзину, ну и само собой все товары в ней.
Так вот в каждом таком компоненте авторы, в своем js, кто как реализует обновление данных корзины в html:
1) Кто-то циклом проходит и меняет в товарах цену и старую цену, а также результирующий блок
2) Кто-то целиком меняет весь кусок html кода корзины

Если в коробке miniShop2 будет универсальный метод получения актуальной корзины и обновляющий соответственно html на странице корзины, тогда в любом компоненте можно просто будет вызвать что-то типа
/**здесь любая логика по расчетам и.т.д*/
/**а в конце*/
miniShop2.Cart.status()
И всё сразу обновилось на странице на актуальные цифры.

Если понадобится что-то кастомное делать в чанке корзины, то поправить нужно будет только коробочный класс корзины (имею ввиду не исходники, а доработанную копию). То есть изменить только в одном месте.
Не придется лезть во все js других компонентов и везде менять реализацию обновления данных корзины.

Ну и ещё на ум пришел пример, если корзину делать на условном React, Vue, любом реактивном фреймворке, то как-то нужно получать стейт корзины из js, чтобы вьюха по стейту всё обновляла на странице.
Артур Шевченко
01 февраля 2023, 18:21
0
Ну да, нейминг неудачный, исправлю. А метод запроса статуса зачем? Просто уже обсуждали этот вопрос, так реального кейса, когда такой метод может понадобится никто и не привёл.
Futuris
01 февраля 2023, 18:10
0
Это ваше дело. Я в итоге разобрался.) Вопрос только — каждый ли будет делать столько попыток?
Николай Савин
01 февраля 2023, 18:06
0
Возможно Ивану так проще отслеживать где чьи деньги.
Futuris
01 февраля 2023, 18:04
+1
Кстати оплатить в итоге получилось только когда в поле имя ввел Имя и Фамилию на латинице — как указано на карте. Но плейсхолдер «Как вас зовут» на странице оплаты, все же подразумевает свободную форму. Именно так я и понял вначале. И пытался в течение дня раз 5 оплатить — но без успеха. По-моему проще указать номер карты и таких сложностей ни у кого не будет.
Miša Bulic
01 февраля 2023, 17:47
0
Дела так, даже рядом не стоит с удобством из минишопа.
Алексей
01 февраля 2023, 17:06
0
Отдельно можно самому написать — создать отдельное TV поле, создать плагин на OnDocFormSave и обрабатывать изменение связей. Но это по-сути дублирование функционала msProductLink.
Семён Кудрявцев
01 февраля 2023, 17:02
+3
Изучаю новый комплект js, и такой момент вижу

Мне одному кажется, что метод должен называться — sendRequest? Так как шлем «запрос» на сервер.
Или я тут что-то не улавливаю до конца?
Ещё момент, очень не хватает со стороны js метода запроса получения актуального состояния корзины,
чтобы прямо из консоли можно было вызвать так — miniShop2.Cart.status(); Без параметра, метод возвращал бы актуальную корзину, а с параметром как обычно отрабатывал. По аналогии как сейчас работает miniShop2.Order.getcost();
Алексей
01 февраля 2023, 17:01
0
Я сначала поискал.
Привязка статей к товару minishop2
Как связать ресурсы определенных категорий между собой
Потом почитал про msProductLink
Потом посмотрел
/assets/components/minishop2/js/mgr/product/links.grid.js
и
/assets/components/minishop2/js/mgr/product/links.window.js
А потом подумал ро обновления. По этому и спросил.
Miša Bulic
01 февраля 2023, 16:27
0
Его бы в идеале вообще отдельным компонентом сделать. Потому что он очень удобный, и не в некоторых проектах не всегда и минишоп то требуется, а этот функционал бы подошел.