mkone112, начальная проверка, чтобы убедиться что массив не пустой. То что это каша я и так знаю и поэтому написал сюда. Ваш комментарий бесполезный. Критикуешь - предлагай.
Danny Arty, Хочу выразить огромную благодарность. Все сработало как нужно, теперь правда всю логику связанную с корзиной на беке переписывать нужно так как все было написано под БД, но это уже пустяки.
Вы даже не представляете сколько было потрачено нервов и времени. Функционал корзины я начал еще в январе и написал логику с промокодами, кешбек системой и прочее, но когда дошло дело до модификаций товара, я прям застрял. Читал статьи, литературу, видео смотрел разные, но все было слишком обыденно и я никак не мог найти этот нюанс. Нашел человека, который должен был мне закончить функционал корзины, потратил месяц на него и он слился тихо просто. Нашел второго, но тот тоже решения не предложил. Злился я сильно конечно и тут вы) Не знаю как бы я додумался про генерацию ключа товара без вас. Огромное спасибо.
Если можно ваш телеграм, может вы еще сможете помочь советами ценными в дальнейшем так как еще достаточно кода впереди. Да и я бы с радостью вас отблагодарил символически материально.
Пишите в тг: wemakeweb
Danny Arty, нет. Я про то, что когда я открываю вкладку товара и добавляю добавки к товару, я же его еще не положил в корзину, но где тогда получается эту информацию хранить??
Я сегодня пробовал сделать корзину в сессии и товар по генерируемую ключу. Все с этим понятно. Но наткнулся на нюанс, пока не разобрался. Вот если я добавляю товар в корзину, то я создаю сессию cart_id, её id и там массив items и каждый item это тоже массив с данными под своим ключем. Но... Если я просто добавляю добавку к товару и модификатор, то это уже не корзина.
Значит получается мне нужно как-то в той же сессии создать массив товара, проверять выбран тот или иной товар, класть в поле добавок эти добавки, видоизменять массив. И потом если товар в итоге пойдет в корзине брать уже созданный массив товара из сессии и дублировать его под корзиной и генерировать ключ? Так ли это, или вы скорее всего можете подсказать более правильное решение?
У меня есть таблица Cart. И еще CartItems. И еще если у меня гость положил товары в корзину, то у меня присваивается ключ сессии к корзине, а если авторизованный, то я присваиваю пользователя к корзине. Хранить все корзине в БД бессмысленно, чтобы повторить заказ можно хранить таблицу Заказа. Корзину же лучше удалять после успешного оформлления заказа. Можно хранить тольку одну корзину в БД, в случае если не был оформлен заказ, что я и делаю сейчас. С эти проблем нет.
Danny Arty, я почему про фронт спросил так как посмотрел что в почти всех приложениях заказа еды кнопки добавить добавку и выбрать модификатор не отправляют запросы на бекенд, у меня же каждое действие это запрос на бек сейчас.
Я же могу в html залезть и изменить цену товара или добавки и из это сформировать json отправив на бек. Значит получается на беке должна быть дополнительная проверка для принимаемого массива на содержимое, товар и его цена и так далее...? Тогда похоже уже на костыль.
Сегодня буду пробовать изменить id товара в корзине на генерируемый ключ.
спасибо за ответ, это уже что-то. Получается что этот json и в принципе функционал нужно на фронте создавать, а не на беке? Я полазил в network у додо пиццы и прочих и увидел, что генерируется json при POST запросе, который отправляется на бек один раз в случаи нажатия 'в корзину', если просто выбрать товар и добавить к нему разные добавки и опции, то запросов не беке нету, и это странно так как я всегда думал что вся логика, особенно с ценой должна выполняться на сервере. Структура сложновата конечно.
По поводу уникального ключа, а если еще раз добавили товар с теме же атрибутами, то он должен сложиться + 1 к уже существующему, а по логике описанной выше сгенерируется новый id товара и в корзине это будет тоже отдельный товар.
И еще есть нюанс, что у модификатора есть своя цена, которая меняет собой цену товара по умолчанию, ну и у добавок есть своя цена, но в их случаи это + к цене в корзине
Dr. Bacon, на данную реализацию примера кода нету поэтому и спрашиваю может есть какие-то примеры где-то? так как я дельного ничего не нашел, все обыденно. A Про коммент 'клади аккуратно' это бессмысленный комментарий.
Странно, после часов мучений и поисков, я решил название папки efood-backend сократить до просто efood и все работает как нужно. Контейнеры автоматом сами обновляются.
Виталий, спасибо за ваш ответ. К сожалению не могу разобраться, но мне что-то подсказывает что все гораздо проще чем я думаю и делаю. Если вам не сложно, то вот тестовая ссылка на этот слайдер testingsite.tmweb.ru/nav_test/scroll.html . Могли бы вы сказать как сделать так чтобы он зашивилился по секциям?