2011-03-14 67 views
3

我很瞭解ZF,還有一點Magento,但我是電子商務的新手,我確信在設計購物車模型時最好遵循一些最佳實踐。你將如何在Zend Framework項目中「設計」購物車?

怎麼去設計一個購物車?

我雖然有兩個模型,Model_CartModel_Cart_Item與Zend_Session一起使用以在會話中存儲購物車。

您的反饋意見是什麼?

你會怎麼做呢?關於編寫購物車系統我應該知道些什麼?

注意,我需要一個簡單的系統,我甚至不需要使用量的工作

回答

3

如果你的模型很容易序列化,你可以簡單地將它們添加到會話數據,例如

// storage 
$cartNamespace = new Zend_Session_Namespace('cart'); 
$cartNamespace->cart = $cart; // $cart is a Model_Cart with items 

// retrieval 
$cartNamespace = new Zend_Session_Namespace('cart'); 
if (isset($cartNamespace->cart) { 
    $cart = $cartNamespace->cart; 
} 

POPO(Plain Old PHP Objects)很容易連載。如果您的模型包含任何運行時特定屬性(數據庫連接,文件句柄等),則應該實現Serializable接口來處理任何複雜性。

您也可以考慮將模型數據存儲在數據庫中。關於購物車數據存儲的SO有一些討論可能會幫助您做出決定。

1

你是在正確的軌道上。

我建議創建一個控制器動作助手類來協助完成此任務。這將使您的控制器代碼更小。這是一個很好的tutorial about action helpers

給助手類的一些基本方法:

$this->_helper->card->add($product, $qty); 
$this->_helper->card->remove($product); 
$this->_helper->card->getItems(); 

東西沿着這些路線。

對於編寫 購物車系統我應該知道些什麼?

這是更多的結帳部分... 適用於美國。如果您的營業地點與用戶的狀態相同,則客戶必須繳稅。例如。如果您的企業在佛羅里達州註冊,客戶是佛羅里達州居民客戶必須繳納稅款,但紐約客戶不需要交稅。

1

創建購物車和Cart_Item類。 Cart類應該包含用於添加和刪除Cart_Items的方法,這些Cart_Items在Cart類中存儲爲數組。另外創建一個保存方法,將購物車的狀態序列化到會話中,我也喜歡使用標準的Zend_Db_Table_Abstract模型將購物車序列化到數據庫表中。

我創建了控制器操作,該操作獲取產品ID和數量,並將它們傳遞給Cart類的添加/刪除方法,然後繼續保持購物車。

我發現這對於這類系統實現singleton pattern很有用,特別是如果Cart正在從構造上的數據庫更新自己的話。

正如亞歷克斯提到的助手也很有用,我喜歡使用視圖助手,它將檢索當前的購物車實例,並允許您輕鬆地提取小計和總計等。在視圖中。

此外,使用迭代器,可數和ArrayAccess接口的考慮因素,以便您可以循環通過購物車以檢索所有項目。

我希望這是一些幫助!