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


Do I need to change something in the cart class in Codeigniter to utilize both session variables and database data?

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

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

如何在不更改内置cart类的情况下实现这一点?如果这不可能,我可能不得不重写cart类,这需要一些工作。

可能有两种方法。

  1. 继承您的内置卡类并覆盖product_insert、product_update和product_delete方法。这更清洁,并为您提供更好的可定制性。您需要的功能非常琐碎,您可以使用这样的功能来完成它。

    function product_insert() {   
      checkUserSignedIn();   
      if(true) {
        parent::product_insert();   
      } else {
        doYourthingHere();   
      } 
    }
    

覆盖所有像这样的crud方法,你就可以实现你想要的。

  1. 使用自定义库

http://codeigniter.com/forums/viewthread/212926/P10/#1006680

它有一些您需要的功能,但您仍然需要对其进行调整,以完全适应您的需求