Удалить товар из корзины по id ?
Может кто-то сталкивался и быстро подскажет, буду признателен.
Хочу чтобы товары, которые выводятся msProducts имели возможность быть как добавленными в корзину так и удаленными оттуда.
И если с добавление товара в корзину проблем нет, добавление происходит по id товара
Как наименее трудозатратно удалить товар имея только id?
Спасибо.
Хочу чтобы товары, которые выводятся msProducts имели возможность быть как добавленными в корзину так и удаленными оттуда.
И если с добавление товара в корзину проблем нет, добавление происходит по id товара
<form method="post" class="ms2_form">
<input type="hidden" name="id" value="{$id}">
<input type="hidden" name="count" value="1">
<input type="hidden" name="options" value="[]">
<button class="btn btn_fluid" name="ms2_action" value="cart/add">I love this one</button>
</form>
то для удаление уже используется не id а некий ключ — некий хеш.<form method="post" class="ms2_form">
<input type="hidden" name="key" value="{$product.key}">
<button class="link" type="submit" name="ms2_action" value="cart/remove">
Remove
</button>
</form>
и этот key в сниппете msProducts отсутствует.Как наименее трудозатратно удалить товар имея только id?
Спасибо.
Комментарии: 7
Пока что двигаюсь в направлении
— подсмотреть как сниппет msCart формирует key,
— скопировать msProducts и если это возможно, внедрить в него логику формирования ключа
— подсмотреть как сниппет msCart формирует key,
— скопировать msProducts и если это возможно, внедрить в него логику формирования ключа
Ключ формируется так:
$key = md5($id . $price . $weight . (json_encode($options)));
Супер! Опробую.
Николай, а где именно происходит такое формирование ключа?
Я смотрю что сниппет msCart его не рассчитывает, он получает всю корзину через
Я смотрю что сниппет msCart его не рассчитывает, он получает всю корзину через
$cart = $miniShop2->cart->get();
и в $cart уже лежат ключи.
в классе корзины:
/core/components/minishop2/model/minishop2/mscarthandler.class.php
Сниппет ничего не формирует. Он только выводит.
/core/components/minishop2/model/minishop2/mscarthandler.class.php
Сниппет ничего не формирует. Он только выводит.
Ну тут возникает вопрос, что именно ты хочешь сделать. Если цели отслеживать нахождение товара в корзине нет (добавили товар, кнопка добавления поменялась на «удалить») то тебе хватит какого то файла\ресурса на который ты будешь стучаться ajax. Передавать туда ид товара, а в этом файле \ сниппете что вызывается на ресурсе ты можешь либо пройтись по массиву $_SESSION['minishop2']['cart'] и сделать unset подходящего товара, либо по шаблону выше сгенерировать id товара, и так же сделать его unset();
Если нужно отслеживание есть ли товар в корзине то чуточку больше логики добавится. Нужно создать сниппет которым проверять товар в корзине.
Если нужно отслеживание есть ли товар в корзине то чуточку больше логики добавится. Нужно создать сниппет которым проверять товар в корзине.
Да спасибо, все и правда зависит от задачи.
Мою можно описать так — я разрабатываю некий функционал подарков к заказу.
При определенных условиях покупатель получает возможность выбрать один из нескольких подарков, добавив его в корзину с нулевой ценой.
Сложность в том, что у человека должна быть возможность передумать. Выбрать другой подарок, который сразу заменит уже заранее добавленный и тому подобное.
Все это происходит не в корзине, а подарки выводятся стандартно msProducts.
Пока просто ищу способ товар и добавить в корзину и удалить. Почему не хочу просто чисткой $_SESSION['minishop2'] — это не запустит всю логику js скриптов minishop, не будут показаны уведомления о добавлении товара или его удалении.
Но сейчас попробую генерировать key, думаю это поможет.
Мою можно описать так — я разрабатываю некий функционал подарков к заказу.
При определенных условиях покупатель получает возможность выбрать один из нескольких подарков, добавив его в корзину с нулевой ценой.
Сложность в том, что у человека должна быть возможность передумать. Выбрать другой подарок, который сразу заменит уже заранее добавленный и тому подобное.
Все это происходит не в корзине, а подарки выводятся стандартно msProducts.
Пока просто ищу способ товар и добавить в корзину и удалить. Почему не хочу просто чисткой $_SESSION['minishop2'] — это не запустит всю логику js скриптов minishop, не будут показаны уведомления о добавлении товара или его удалении.
Но сейчас попробую генерировать key, думаю это поможет.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.