CodeIgniter User Guide Version 2.0.0


Класс Shopping Cart (Корзина)

Класс позволяет добавлять элементы в сессию в то время, пока пользователь остается на сайте. Эти элементы могут извлекаться и отображаться в формате стандартной корзины, позволяющей пользователю изменять количество или удалять элементы.

Пожалуйста, обратите внимание что класс Shopping Cart обеспечивает лишь базовую функциональность корзины. Он не поддерживает функции доставки, авторизации кредитной карты и другие.

Инициализация класса

Важно: Класс Shopping Cart использует Класс Session CodeIgniter для того, чтобы сохранять информацию корзины в базе данных, поэтому перед использованием необходимо создать соответствующую таблицу, как описано в Документации Session , и установить настройки сессии в вашем application/config/config.php файле.

Для того, чтобы инициализировать класс Shopping Cart в вашем контроллере, используйте функцию $this->load->library:

$this->load->library('cart');

Загруженный класс Shopping Cart доступен через: $this->cart

Примечание: класс Shopping Cart автоматически загружает и инициализирует класс Session.

Добавление элемента в корзину

Для того, чтобы добавить элемент в корзину, просто передайте массив с детялями элемента в функцию $this->cart->insert(), как показано ниже:

$data = array(
               'id'      => 'sku_123ABC',
               'qty'     => 1,
               'price'   => 39.95,
               'name'    => 'T-Shirt',
               'options' => array('Size' => 'L', 'Color' => 'Red')
            );

$this->cart->insert($data);

Важно: Первые четыре ключа массива (id, qty, price и name) обязательные. Если пропустить любой из них, данные не сохранятся в корзине. Пятый параметр (options) является не обязательным. Он предназначен для использования в тех случаях, когда ваш продукт имеет опции, связанные с ним. Используйте массив для опций, как показано выше.

Пять зарезервированных индексов:

Вдобавок к этим индексам, также зарезервированы два слова: rowid и subtotal. Они используются внутри класса, поэтому, пожалуйста, не используйте эти слова в качестве имен индексов при добавлении данных в корзину.

Ваш массив должен содержать дополнительные данные. Все, что вы включаете в массив, будет сохранено в сессии. Однако, лучше стандартизировать все ваши данные о продуктах в заказе, для того, чтобы облегчить отображение информации.

Добавление множества элементов в корзину

Используя объемный массив, как показано ниже, вы можете добавлять множество продуктов в корзину одним действием. Это полезно в случаях, когда вы хотите позволить людям выбирать из нескольких различных элементов на одной странице.

$data = array(
               array(
                       'id'      => 'sku_123ABC',
                       'qty'     => 1,
                       'price'   => 39.95,
                       'name'    => 'T-Shirt',
                       'options' => array('Size' => 'L', 'Color' => 'Red')
                    ),
               array(
                       'id'      => 'sku_567ZYX',
                       'qty'     => 1,
                       'price'   => 9.95,
                       'name'    => 'Coffee Mug'
                    ),
               array(
                       'id'      => 'sku_965QRS',
                       'qty'     => 1,
                       'price'   => 29.95,
                       'name'    => 'Shot Glass'
                    )
            );

$this->cart->insert($data);

Отображение корзины

Для отображения корзины создайте Отображение с кодом, соответствующим примеру ниже.

Примеры используют помощник Form.

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

Для обновления информации в вашей корзине, вы должны передать массив, содержащий Row ID и количество в функцию $this->cart->update():

Примечание: Если количество равно нулю, элемент будет удален из корзины.

$data = array(
               'rowid' => 'b99ccdf16028f015540f341130b6d8ec',
               'qty'   => 3
            );

$this->cart->update($data);

// Or a multi-dimensional array

$data = array(
               array(
                       'rowid'   => 'b99ccdf16028f015540f341130b6d8ec',
                       'qty'     => 3
                    ),
               array(
                       'rowid'   => 'xw82g9q3r495893iajdh473990rikw23',
                       'qty'     => 4
                    ),
               array(
                       'rowid'   => 'fh4kdkkkaoe30njgoe92rkdkkobec333',
                       'qty'     => 2
                    )
            );

$this->cart->update($data);

Что такое Row ID? Row ID — это уникальный идентификатор, который генерируется корзиной при добавлении элемента. Смысл уникального идентификатора в том, что одинаковые продукты могут иметь различные опции.

Например, поговорим о покупке двух одинаковых маек (с одинаковым идентификатором), но различных размеров. Идентификатор продукта (и другие атрибуты) будут одинаковые для обоих размеров, так как это просто майка. Различие заключается только в размере. Корзина должна учитывать различия так, чтобы различные размеры маек учитывались независимо. Это достигается созданием уникального идентификатора "row ID", основанного на ID продукта и ассоциированными опциями.

Почти во всех случаях обновление корзины будет происходить на специальной странице "Корзина". Разработчику неприятно беспокоить себя различными "row ID", поэтому убедитесь, что страница корзины содержит эту информацию в скрытом поле, и передает ее при обновлении. Пожалуйста, рассмотрите конструкцию отображения корзины для более детальной информации.

 

Справка по функциям

$this->cart->insert();

Позволяет вам добавлять элементы в корзину, как показано выше.

$this->cart->update();

Позволяет вам обновлять корзину, как показано выше.

$this->cart->total();

Отображает общую стоимость элементов в корзине.

$this->cart->total_items();

Отображает количество элементов в корзине.

$this->cart->contents();

Возвращает массив, содержащий все элементы корзины.

$this->cart->has_options(rowid);

Возвращает TRUE (boolean), если конкретная строка в корзине содержит опции. Эта функция предназначена для использования в цикле вместе с $this->cart->contents(), так как вы должны передать rowid этой функции, как показано в примере выше- Отображение корзины.

$this->cart->product_options(rowid);

Возвращает массив опций конкретного продукта. Эта функция разработана, чтобы использоваться в цикле с $this->cart->contents(), которому необходимо передавать rowid, как показано в примере выше- Отображение корзины.

$this->cart->destroy();

Позволяет вам удалить корзину. Эта функция может быть вызвана при завершении обработки заказа покупателя.