Класс Корзины (Shopping Cart)
Класс корзины позволяет добавлять элементы в сессию, которая остается активной, пока пользователь посещает ваш сайт. Элементы могут быть получены и отображены в стандартном формате "корзины", позволяя пользователям изменять количество и удалять элементы из корзины.
Пожалуйста обратите внимание, что класс Cart предоставляет только базовую функциональность. Он не поддерживает доставку, авторизацию кредитных карт и другие компоненты процессинга.
Инициализация класса
Важно: Класс Cart использует класс Session для сохранения информации корзины в БД, поэтому перед использованием класса Cart вы должны создать таблицу в БД, как описано в документации класса Session, и установить настройки сессий в вашем файле application/config/config.php, чтобы использовать базу данных.
Чтобы инициализировать класс Cart в конструкторе контроллера, используйте функцию $this->load->library:
$this->load->library('cart');
Загруженный объект класса доступен к использованию через: $this->cart
Добавление элемента в корзину
Чтобы добавить элемент в корзину, просто передайте массив с информацией о продукте в функцию $this->cart->insert(), как показано ниже:
Обновление корзины
Чтобы обновить информацию в вашей корзине, вы должны передать массив, содержащий Row ID (идентификатор строки) и количество функции $this->cart->update():
Что такое 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();
Позволяет вам удалить корзиину. Эта функция может быть вызвана, к примеру, когда покупатель оформил заказ.
Пример:
У меня в базе данных есть табличка с несколькими товарами.
Таблица в моем случае "products" с полями id,title,price
Так-же требуется загрузить библиотеку сессий. в config.php пример: $config['encryption_key'] = '123456';
//Возвращаемся на страницу списка товаров после добавления товара в корзину
$this->cart->insert($data);
redirect('blog');
}
else
{
$this->load->view('products');
}
}