Работа с корзиной

Материал из Insales Wiki
Перейти к: навигация, поиск

Введение

Как уже говорили в предыдущих разделах, для корзины есть отдельный шаблон. В интернет-магазине корзина находится на странице /cart_items.

Для изменения состава корзины предусмотрено три операции:

  1. добавление позиции,
  2. обновление позиции,
  3. групповое изменение состава корзины (с его помощью сделана кнопка пересчитать на странице корзины в стандартных шаблонах).

Все операции, меняющие состав корзины, осуществляются путем отправления POST запроса на URL /cart_items. Можно ограничиться обычными html формами, можно манипулировать корзиной при помощи ajax запросов, для этого надо использовать URL /cart_items.json. Содержание запросов не зависит от того, каким из двух способов вы работаете с корзиной.

Если вы используете html форму, то после выполнения операции покупатель будет перенаправляться на страницу корзины.

Добавление позиции

Параметры запроса:

  • variant_id - id модификации
  • quantity - добавляемое в корзину количество


Если вы используете ajax запрос, то вам вернут объект в JSON формате с атрибутами:

  • items - описание позиций;
  • items_count - количество позиций;
  • total_price - стоимость заказа с учетом скидок и стоимости доставки;
  • currency - обозначение валюты, указанное в настройках валюты;
  • currency_format - формат вывода стоимости, указанный в настройках валюты.

Добавление нескольких позиций

Параметры запроса:

  • variant_ids[id] - добавляемое в корзину количество экземпляром модификации с идентификатором id

Если вы используете ajax запрос, то вам вернут объект в JSON формате с атрибутами:

  • items - описание позиций;
  • items_count - количество позиций;
  • total_price - стоимость заказа с учетом скидок и стоимости доставки;
  • currency - обозначение валюты, указанное в настройках валюты;
  • currency_format - формат вывода стоимости, указанный в настройках валюты.

Удаление позиции

URL запроса: /cart_items/id

где id - идентификатор модификации

Параметры запроса:

  • _method - строка 'delete'

Если вы используете ajax запрос, то вам вернут объект в JSON формате с атрибутами:

  • items_count - количество позиций;
  • total_price - стоимость заказа с учетом скидок и стоимости доставки;
  • currency - обозначение валюты, указанное в настройках валюты;
  • currency_format - формат вывода стоимости, указанный в настройках валюты.

Обновление состава корзины

Позволяет одновременно добавлять и удалять позиции, так же позволяет менять количество заказываемых товаров.

Параметры запроса:

  • _method - строка 'put'
  • cart[quantity][id модификации] - количество (если вы хотите удалить позицию, то 0)

Если модификация, есть в корзине, а ее в запросе не упомянули, то она удаляется из корзины. Если в количестве указан 0, то модификация опять же удаляется из корзины.

Если вы используете ajax запрос, то вам вернут объект в JSON формате с атрибутами:

  • total_price - стоимость заказа с учетом скидок и стоимости доставки;
  • currency - обозначение валюты, указанное в настройках валюты;
  • currency_format - формат вывода стоимости, указанный в настройках валюты.

Если

Пример:

  <form action="/cart_items" id="cartform" method="post">
    <input type="hidden" value="put" name="_method">
    <table>
    {% for item in cart.items %}
      <tr>
        <td><a href="{{ item.product.url }}">{{ item.title | escape }}</a></td>
        <td><input type="text" value="{{ item.quantity }}" name="cart[quantity][{{ item.id }}]"/><td>
     </tr>
    {% endfor %}
    </table>
  </form>

Описание JSON ответов

items

Массив объектов, описывающих позиции заказа.

Атрибуты позиции:

  1. title - название позиции
  2. sku - артикул модификации
  3. variant_id - идентификатор модификации
  4. sale_price - цена одного экземпляра
  5. quantity - количество заказанных экземпляров
  6. weight - суммарный вес
  7. total_price - суммарная стоимость позиции
  8. product_id - идентификатор товара
  9. product_url - URL страницы заказа