Класс Корзина
Класс Корзина позволяет добавлять товары в сессию, которая остается активной во время просмотра сайта пользователем. Эти товары можно извлечь и отобразить в стандартном формате «корзины», позволяя пользователю обновлять количество или удалять товары из корзины.
Важно
Библиотека Корзина устарела и не должна использоваться. В настоящее время она поддерживается только для обратной совместимости.
Обратите внимание, что класс Корзина только предоставляет основную функциональность «корзины». Он не предоставляет функции доставки, авторизации кредитных карт или другие компоненты обработки.
Использование класса Корзина
Инициализация класса Корзина
Важно
Класс Корзина использует класс сессий CodeIgniter для сохранения информации о корзине в базе данных, поэтому перед использованием класса Корзина необходимо создать таблицу базы данных, как указано в документации по сессиям, и настроить настройки сессии в файле application/config/config.php для использования базы данных.
Для инициализации класса Корзина в конструкторе контроллера используйте метод $this->load->library():
$this->load->library('cart');
После загрузки объект Корзина будет доступен с помощью:
$this->cart
Примечание
Класс Корзина загрузит и инициализирует класс сессий автоматически, поэтому если вы не используете сессии где-либо еще в приложении, вам не нужно загружать класс сессий.
Добавление товара в корзину
Чтобы добавить товар в корзину, просто передайте массив с информацией о продукте в метод $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) является необязательным. Он предназначен для использования в случаях, когда ваш продукт имеет связанные с ним опции. Используйте массив для опций, как показано выше.
Пять зарезервированных индексов:
- id - Каждый продукт в вашем магазине должен иметь уникальный идентификатор. Обычно это «sku» или другой подобный идентификатор.
- qty - Количество приобретаемых товаров.
- price - Цена товара.
- name - Название товара.
- options - Любые дополнительные атрибуты, необходимые для идентификации продукта. Они должны передаваться через массив.
Помимо пяти индексов выше, есть два зарезервированных слова: rowid и subtotal. Они используются внутри класса Корзина, поэтому не используйте эти слова в качестве имен индексов при вставке данных в корзину.
Ваш массив может содержать дополнительные данные. Все, что вы включите в свой массив, будет сохранено в сессии. Однако лучше стандартизировать ваши данные среди всех ваших продуктов, чтобы упростить отображение информации в таблице.
$data = array(
'id' => 'sku_123ABC',
'qty' => 1,
'price' => 39.95,
'name' => 'T-Shirt',
'coupon' => 'XMAS-50OFF'
);
$this->cart->insert($data);
Метод 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);
Отображение корзины
Для отображения корзины вы создадите файл представления файл представления с кодом, подобным показанному ниже.
Обратите внимание, что в этом примере используется помощник формы.
<?php echo form_open('path/to/controller/update/method'); ?>
<table cellpadding="6" cellspacing="1" style="width:100%" border="0">
<tr>
<th>QTY</th>
<th>Item Description</th>
<th style="text-align:right">Item Price</th>
<th style="text-align:right">Sub-Total</th>
</tr>
<?php $i = 1; ?>
<?php foreach ($this->cart->contents() as $items): ?>
<?php echo form_hidden($i.'[rowid]', $items['rowid']); ?>
<tr>
<td><?php echo form_input(array('name' => $i.'[qty]', 'value' => $items['qty'], 'maxlength' => '3', 'size' => '5')); ?></td>
<td>
<?php echo $items['name']; ?>
<?php if ($this->cart->has_options($items['rowid']) == TRUE): ?>
<p>
<?php foreach ($this->cart->product_options($items['rowid']) as $option_name => $option_value): ?>
<strong><?php echo $option_name; ?>:</strong> <?php echo $option_value; ?><br />
<?php endforeach; ?>
</p>
<?php endif; ?>
</td>
<td style="text-align:right"><?php echo $this->cart->format_number($items['price']); ?></td>
<td style="text-align:right">$<?php echo $this->cart->format_number($items['subtotal']); ?></td>
</tr>
<?php $i++; ?>
<?php endforeach; ?>
<tr>
<td colspan="2"> </td>
<td class="right"><strong>Total</strong></td>
<td class="right">$<?php echo $this->cart->format_number($this->cart->total()); ?></td>
</tr>
</table>
<p><?php echo form_submit('', 'Update your Cart'); ?></p>
Обновление корзины
Чтобы обновить информацию в вашей корзине, необходимо передать массив, содержащий 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);
Вы также можете обновить любое свойство, которое вы ранее определили при вставке товара, такое как опции, цена или другие пользовательские поля.
$data = array(
'rowid' => 'b99ccdf16028f015540f341130b6d8ec',
'qty' => 1,
'price' => 49.95,
'coupon' => NULL
);
$this->cart->update($data);
Что такое ID строки?
ID строки — это уникальный идентификатор, который генерируется кодом корзины при добавлении товара в корзину. Причина создания уникального ID заключается в том, чтобы управлять идентичными продуктами с различными опциями в корзине.
Например, предположим, что кто-то покупает две одинаковые футболки (один и тот же идентификатор продукта), но разных размеров. Идентификатор продукта (и другие атрибуты) будет одинаковым для обоих размеров, потому что это одна и та же футболка. Единственное различие будет в размере. Таким образом, в корзине должен быть способ идентификации этого различия, чтобы две футболки разных размеров можно было управлять независимо. Это делается путём создания уникального «ID строки» на основе идентификатора продукта и любых связанных с ним опций.
В почти всех случаях обновление корзины будет осуществляться пользователем через страницу «Просмотр корзины», поэтому как разработчик, вы, скорее всего, не будете иметь дела с «ID строки», кроме как убедиться, что ваша страница «Просмотр корзины» содержит эту информацию в скрытом поле формы и что она передается в метод update() при отправке формы обновления. Пожалуйста, обратите внимание на структуру страницы «Просмотр корзины» для получения дополнительной информации.
Справочник по классу
-
class CI_Cart -
-
$product_id_rules = '.a-z0-9_-' -
Это правила регулярных выражений, которые мы используем для проверки идентификатора продукта — по умолчанию алфавитно-цифровые символы, дефисы, нижние подчёркивания или точки.
-
$product_name_rules = 'w -.:' -
Это правила регулярных выражений, которые мы используем для проверки идентификатора продукта и названия продукта — по умолчанию алфавитно-цифровые символы, дефисы, нижние подчёркивания, двоеточия или точки.
-
$product_name_safe = TRUE -
Включить или выключить возможность разрешать только безопасные названия продуктов. По умолчанию ИСТИНА.
-
insert([$items = array()]) -
Параметры: - $items (массив) — Элементы для добавления в корзину
Возвращает: ИСТИНА при успехе, ЛОЖЬ при ошибке
Тип возвращаемого значения: bool
Добавляет элементы в корзину и сохраняет её в таблице сеансов. Возвращает ИСТИНА при успехе и ЛОЖЬ при ошибке.
-
update([$items = array()]) -
Параметры: - $items (массив) — Элементы для обновления в корзине
Возвращает: ИСТИНА при успехе, ЛОЖЬ при ошибке
Тип возвращаемого значения: bool
Этот метод позволяет изменить свойства заданного элемента. Как правило, он вызывается со страницы «Просмотр корзины», если пользователь меняет количество перед оформлением заказа. Этот массив должен содержать rowid для каждого элемента.
-
remove($rowid) -
Параметры: - $rowid (int) — ID элемента для удаления из корзины
Возвращает: ИСТИНА при успехе, ЛОЖЬ при ошибке
Тип возвращаемого значения: bool
Позволяет удалить элемент из корзины, передав ему
$rowid.
-
total() -
Возвращает: Общая сумма Тип возвращаемого значения: int Отображает общую сумму в корзине.
-
total_items() -
Возвращает: Общее количество элементов в корзине Тип возвращаемого значения: int Отображает общее количество элементов в корзине.
-
contents([$newest_first = FALSE]) -
Параметры: - $newest_first (bool) — Сортировать массив по новейшим элементам вначале
Возвращает: Массив содержимого корзины
Тип возвращаемого значения: массив
Возвращает массив, содержащий всё содержимое корзины. Вы можете отсортировать порядок возвращаемого массива, передав в него ИСТИНА, где содержимое будет отсортировано от новейшего к старейшему, в противном случае оно будет отсортировано от старейшего к новейшему.
-
get_item($row_id) -
Параметры: - $row_id (int) — Идентификатор строки для извлечения
Возвращает: Массив данных элемента
Тип возвращаемого значения: массив
Возвращает массив, содержащий данные для элемента, соответствующего заданному идентификатору строки, или ЛОЖЬ, если такого элемента нет.
-
has_options($row_id = '') -
Параметры: - $row_id (int) — Идентификатор строки для проверки
Возвращает: ИСТИНА, если опции существуют, ЛОЖЬ в противном случае
Тип возвращаемого значения: bool
Возвращает ИСТИНА (булево значение), если конкретная строка в корзине содержит опции. Этот метод предназначен для использования в цикле с
contents(), так как вы должны передать rowid в этот метод, как показано в примере отображения корзины выше.
-
product_options([$row_id = '']) -
Параметры: - $row_id (int) — Идентификатор строки
Возвращает: Массив опций продукта
Тип возвращаемого значения: массив
Возвращает массив опций для конкретного продукта. Этот метод предназначен для использования в цикле с
contents(), так как вы должны передать rowid в этот метод, как показано в примере отображения корзины выше.
-
destroy() -
Тип возвращаемого значения: void Позволяет уничтожить корзину. Этот метод, скорее всего, будет вызван, когда вы закончите обработку заказа клиента.
-
© 2014–2020 British Columbia Institute of Technology
Licensed under the MIT License.
https://codeigniter.com/userguide3/libraries/cart.html