CodeIgniter 使用手冊版本 2.1.4


Shopping Cart 類別

當使用者造訪你的購物網站時,Cart 類別允許讓購物項目新增在 session 中,這些項目可以被檢視並且顯示在標準的 "shopping cart" 格式中,並且可以讓使用者去更新購物項目的數量或是移除這些項目

請注意,Cart 類別只提供了核心的 "cart" 函數,並不提供如:運輸、信用卡認証或是其它項目的處理

初始化 Shopping Cart 類別

重要: Shopping Cart 類別使用了 CodeIgniter 的 Session Class 將購物資訊儲存在資料庫中,因此在使用 Shopping Cart 類別前必須先設定好資料庫(詳細請見 Session Documentation ),並在 application/config/config.php 設定好 session 的相關設定

在控制器中初始化 Shopping Cart 類別使用: $this->load->library 函數:

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

載入之後可以這樣使用: $this->cart

注意: Shopping Cart 類別將會自動載入並且初始化 Session Class,除非你在程式中的別的地方有使用 session,否則你並不需要載入 Session Class

在購物車中新增購物商品

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

重要: 前四個索引 (idqtypricename) 都是必要的,如果少了其中一項,則資料將不會被儲存,第五個索引 (options) 是選擇性的,它是使用在當你的商品具有其它資訊需要被記錄時,將其它資訊以陣列的方式儲存

各保留索引的含意:

除了以上五個保留索外,另外還有二個保留字: rowidsubtotal,這二個保留字是用在 Shopping Cart 類別的內部,因此請不要用這二個保留字作為索引

針對商品額外資訊,建議你可以在所有商品中訂出一套規則,來讓你更容易的顯示商品資訊

The insert() method will return the $rowid if you successfully insert a single item.

在購物車中新增多項購物商品

如以下所示,透過多維陣列的方式來達成讓使用者在同一時間內選取多項商品

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

顯示購物車內的商品

為了顯示購物車內的商品,你必須建立一個 view file 如同以下的範例

請注意,這個範例使用了 form helper

更新購物車內的商品數量

透過 $this->cart->update() 函式載入一個陣列,陣列內容包含 Row ID 與數量:

注意: 如果數量為0則商品將會被移出購物車

$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 是你將商品放物購物車時所產生的一個唯一值,用來標記購物車中的各項商品

舉例來說,有個人買了二件相同的 t-shirt 但不同尺寸,因此在購物車中會出現二個相同的商品編號,所以購物必須要給各個商品一個唯一的 "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);

回傳購物車中的特定資料是否有選項,此函數使用在含有 $this->cart->contents() 的迴圈中並且你必須指定 rowid,回傳值為布林值

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

回傳購物車中的特定商品是否有選項,此函數使用在含有 $this->cart->contents() 的迴圈中並且你必須指定 rowid,回傳值為布林值

$this->cart->destroy();

允許你刪除一台購物車,當使用者購物完畢時