Фреймворк CodeIgniter Version 2.1.3


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

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

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

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

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

Чтобы инициализировать класс Cart в конструкторе контроллера, используйте функцию $this->load->library:

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

Загруженный объект класса доступен к использованию через: $this->cart

Примечание: Класс Cart будет загружать и инициализировать класс Session автоматически, поэтому вне зависимости от того, используете ли вы класс 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. Они используются внутри класса Cart, поэтому не используйте эти слова в качестве имен индексов при добавлении данных в корзину.

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

Метод insert() возвращает $rowid (идентификатор строки) если вы успешно вставили один элемент.

Добавление множества элементов

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

$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);

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

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

Обратите внимание, что этот пример использует помощник форм.

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

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

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

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

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

// Или многомерный массив

$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" (идентификатору строки), основанному на идентификаторе продукта и других опциях, ассоциированных с ним.

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

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

$this->cart->insert();

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

$this->cart->update();

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

$this->cart->total();

Возвращает полную стоимость корзины.

$this->cart->total_items();

Возвращает суммарное количество элементов в корзине.

$this->cart->contents();

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

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

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

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

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

$this->cart->destroy();

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

    Поддержать сайт на родительском проекте КГБ