3

CI 2.1.1 とネイティブのカート ライブラリを使用する

アイテム (同じ製品 ID、同じオプション) を複数回挿入すると、数量が増える代わりに置き換えられます。

これはバグでしょうか、何か足りないのでしょうか、それともこの機能を自分で追加する最善の方法は何でしょうか?

4

2 に答える 2

7

これが私の解決策でした.System/libraries/Cart.phpの行番号を変更しました. 233~244

これを行うにはもっと良い方法があるかもしれませんが、うまくいきます。機能がまだ存在しない理由がわかりません

    // EDIT:    added check if idential rowid/item already in cart, then just increase qty
    //          without this addition, it would not increase qty but simply replace the item
    if (array_key_exists($rowid, $this->_cart_contents)) 
    {  
       $this->_cart_contents[$rowid]['qty'] += $items['qty'];    
    } 
    else 
    {
        // let's unset this first, just to make sure our index contains only the data from this submission
        unset($this->_cart_contents[$rowid]);     

        // Create a new index with our new row ID
        $this->_cart_contents[$rowid]['rowid'] = $rowid;

        // And add the new items to the cart array
        foreach ($items as $key => $val)
        {
            $this->_cart_contents[$rowid][$key] = $val;
        }                       
    }      
于 2012-06-22T00:47:16.877 に答える
2

バグではありません。このように見てください: カートに 1 つの productX が必要であることを CI に伝えています。すでにある場合はそのままです。はrowid更新されます。

コア ライブラリを編集することはお勧めできません。これにより、アプリケーションは行った変更に依存するようになり、CI を更新してコアを再度変更するのを忘れると、アプリケーションが壊れる可能性があります。

qtyユーザーが [追加] をクリックするたびに を本当に増やしたい場合は、あなたがしたことと同様のことをすることをお勧めしますが、あなたの中でmodel. 製品がすでにカートに入っているかどうかを確認し、 を取得してqty既存qtyのものを新しいものに追加します。これは理にかなっていますか?

于 2012-06-22T08:30:45.323 に答える