CI 2.1.1 とネイティブのカート ライブラリを使用する
アイテム (同じ製品 ID、同じオプション) を複数回挿入すると、数量が増える代わりに置き換えられます。
これはバグでしょうか、何か足りないのでしょうか、それともこの機能を自分で追加する最善の方法は何でしょうか?
CI 2.1.1 とネイティブのカート ライブラリを使用する
アイテム (同じ製品 ID、同じオプション) を複数回挿入すると、数量が増える代わりに置き換えられます。
これはバグでしょうか、何か足りないのでしょうか、それともこの機能を自分で追加する最善の方法は何でしょうか?
これが私の解決策でした.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;
}
}
バグではありません。このように見てください: カートに 1 つの productX が必要であることを CI に伝えています。すでにある場合はそのままです。はrowid
更新されます。
コア ライブラリを編集することはお勧めできません。これにより、アプリケーションは行った変更に依存するようになり、CI を更新してコアを再度変更するのを忘れると、アプリケーションが壊れる可能性があります。
qty
ユーザーが [追加] をクリックするたびに を本当に増やしたい場合は、あなたがしたことと同様のことをすることをお勧めしますが、あなたの中でmodel
. 製品がすでにカートに入っているかどうかを確認し、 を取得してqty
既存qty
のものを新しいものに追加します。これは理にかなっていますか?