我是否需要在Codeigniter中更改cart类中的某些内容以使用会话变量和数据库数据?

时间:2012-07-15 06:44:43

标签: php codeigniter

默认情况下,Codeigniter购物车类使用其内置会话功能。 CI中的会话类可以配置为使用cookie或数据库,这意味着购物车将 EITHER 使用数据库或cookie来存储会话变量。

但是对于我的网站,我想实现这个:当用户没有登录时,购物车使用cookie数据;当用户登录时,购物车使用存储在数据库中的数据。这意味着购物车类应该能够在cookie和数据库之间切换。

如何在不更改内置购物车类的同时实现这一目标?如果那是不可能的,我可能不得不重写购物车类,这需要一些工作。

1 个答案:

答案 0 :(得分:1)

有两种可能的方法。

  1. 继承内置的卡片类并覆盖product_insert,product_update和product_delete方法。这更清洁,为您提供更好的可定制性。你需要的功能非常简单,你可以用这样的东西来做。

    function product_insert() {   
      checkUserSignedIn();   
      if(true) {
        parent::product_insert();   
      } else {
        doYourthingHere();   
      } 
    }
    
  2. 覆盖所有这样的crud方法,你可以实现你想要的。

    1. 使用自定义库
    2. http://codeigniter.com/forums/viewthread/212926/P10/#1006680

      它具有您需要的一些功能,但您仍需要调整它以完全满足您的要求