3

現在、単純な e コマース サイトを構築していて、興味深い問題に遭遇しました。

基本的に、製品は製品テーブルにありますが、価格、色など、他にも多くのオプションがあります.これらのいくつかは合計価格に影響します.

ただし、同じ製品でオプションのセットが異なる場合、製品 ID は明らかに同じであり、アイテムは codeigniter カートに追加されません。

私が考えた最も簡単な方法は、同じ ID を持つ製品をカートに入れることを許可することですが、これは簡単に可能ですか? この問題に取り組むより良い方法はありますか?

どんなアイデアもとても役に立ちます!

4

1 に答える 1

7

わかりましたので、人々が役立つと思われる問題に対する答えを見つけました。

基本的に、Codeigniter のカート クラスでサポートされていないオプションに多次元配列を使用していました。

これは、配列が配列として表示されていたため、同じ行 ID を生成していましたが、Codeigniter Cart クラスでハッシュを生成するために使用された implode 関数を壊していた可能性もあります。

これを修正するには、CI_Cart クラス内の次の行を簡単に置き換えることができます。

$rowid = md5($items['id'].implode('', $items['options']));

この行で:

$rowid = md5($items['id'].serialize($items['options']));

問題を解決します。

これにより、多次元配列の格納可能な表現がテキストとして作成されます。これはハッシュされ、オプション値として多次元配列が使用されている場合は常に一意になります。

于 2012-05-06T20:37:08.793 に答える