質問 > フロント機能 > 商品を購入後にカート内の商品情報が削除されないです。 |
フロント機能
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
nouzo |
投稿日時: 2022/2/19 6:40
対応状況: −−−
|
新米 登録日: 2016/7/17 居住地: 投稿: 5 |
商品を購入後にカート内の商品情報が削除されないです。 商品を購入後、ログインしたまま再度商品のカートに移動した際に、以下の一連のファイル、及びそのファンクションにより前回の操作により発生したカート内にある複数の商品情報が削除されると考えていたのですが、全く削除されません。どうかアドバイス等を頂けませんでしょうか?
LC_Page_Shopping_Confirm.php //completeOrder SC_Helper_Purchase.php //completeOrder->cleanupSession->delAllProducts SC_CartSession.php //delAllProducts eccube 2.17 php7.4.3 mysql8.0 補足: 以下のファイルにその下にある記述を追加して初めてログアウト、再度ログイン後にカート内の複数の商品情報が削除される様になりましたが、上記の問題は未解決です。 LC_Page_FrontParts_LoginCheck.php 追加記述箇所 case 'logout': //追加 $objCartSess = new SC_CartSession(); //$cartkey = $objCartSess->getKey(); $cartkey = 1; $objCartSess->delAllProducts($cartkey); $objSiteSess = new SC_SiteSession(); $objSiteSess->unsetUniqId(); //追加 $objCustomer->EndSession(); |
468 |
投稿日時: 2022/2/20 11:14
対応状況: −−−
|
神 登録日: 2008/10/26 居住地: 投稿: 3217 |
Re: 商品を購入後にカート内の商品情報が削除されないです。 SC_CartSession.php function delAllProducts()の中でデバッグしてみるのが良いのではないでしょうか?
まずは処理が正常に通過しているかどうかを判断する必要がある気がします。 念の為の確認ですが、カートの中のページの商品削除は正常に動作しますか? 同じようなロジックでセッション内のデータをunsetしていると思いますので そちらが正常に動作しないようであればセッションの挙動がおかしくなっているのではないかと思います。
|
nouzo |
投稿日時: 2022/2/21 14:26
対応状況: −−−
|
新米 登録日: 2016/7/17 居住地: 投稿: 5 |
Re: 商品を購入後にカート内の商品情報が削除されないです。 468様、
お時間頂き、かつ的確なご助言大変感謝致します。 まず、カートページ(xxx/cart/)での手動による商品削除は正常に動作しております。 また、以下の様な設定によりにLC_Page_Cart.phpからSC_CartSession.phpのdelAllProductsを指定し、カートページ内から削除リンクをクリックすることにより全商品が削除されます。 case 'delete'://カートから削除 //$objCartSess->delProduct($cart_no, $cartKey); $cartkey = 1; $objCartSess->delAllProducts($cartkey); そして、SC_CartSession.php/delAllProducts_xと変更して商品購入を試すと以下の様なエラーが発生しますので(変更なしではエラーはでないですし、SC_Helper_Purchase.phpとSC_CartSession.phpの両方をdelAllProducts_xとするとエラーはでません。)、商品購入の際、SC_CartSession.phpのdelAllProductsまで処理が通過していると思われます。 Fatal error(E_ERROR): Uncaught Error: Call to undefined method SC_CartSession::delAllProducts() in /var/www/html/data/class/helper/SC_Helper_Purchase.php:2259 そのSC_CartSession.php/delAllProducts、およびgetMax関数は当然デフォルトの状態であり、かつ上述の様にログアウト、およびSC_CartSession.phpのcase 'delete'からdelAllProductsへの処理ではカート内商品を削除します。 よって、LC_Page_Shopping_Confirm.php/SC_Helper_Purchase.phpからSC_CartSession.php/delAllProductsへ処理が通過される際に、LC_Page_Cart.phpからSC_CartSession.php/delAllProductsへの処理、あるいはログアウト経由の処理とは異なる何かがSC_CartSession.php内で発生している様に思われます。前者の場合、SC_CartSession.php内でdelAllProductsを動作させようとする同時に、それを動作させない何かが発生している様に思われますが(セッションの動作不全?)、どうしても分かりません。 $cartkey = 1;に問題があるのか、phpのバージョンが何か影響しているのか、あるいはunsetを動作させない何かがあるのか等分かりません。 現在、あれこれと試しておりますが、何かお気づきの点はございますでしょうか? とりあえず、phpのバージョンと以下の設定を記載しておきます。 PHP Version 7.4.3 public function delAllProducts($productTypeId) { $max = $this->getMax($productTypeId); for ($i = 0; $i <= $max; $i++) { unset($this->cartSession[$productTypeId][$i]); } } public function getMax($productTypeId) { $max = 0; if (is_array($this->cartSession[$productTypeId]) && count($this->cartSession[$productTypeId]) > 0) { foreach ($this->cartSession[$productTypeId] as $key => $value) { if (is_numeric($key)) { if ($max < $key) { $max = $key; } } } } return $max; } |
nanasess |
投稿日時: 2022/2/22 17:26
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
Re: 商品を購入後にカート内の商品情報が削除されないです。 ちょっとはずしているかもしれませんが、以下のような処理でカートがロールバックしてしまっているということはありませんでしょうか?
https://github.com/EC-CUBE/ec-cube2/blob/4b761076a6caee948b2bf384e6466db4e0bf69af/data/class/pages/cart/LC_Page_Cart.php#L83-L85 |
nouzo |
投稿日時: 2022/2/22 23:29
対応状況: −−−
|
新米 登録日: 2016/7/17 居住地: 投稿: 5 |
Re: 商品を購入後にカート内の商品情報が削除されないです。 nanasess様、
ご教授頂きまして感謝いたします。 ご指摘の通り、ロールバックに関連した問題の様でございます。 >以下のような処理でカートがロールバックしてしまっているということはありませんでしょうか? 上記は本来であればロールバックは終了すべきものであるが、それが何らかの問題により終了していないが為に、商品購入後にカート内の商品情報が削除されないということでしょうか? ロールバックはデフォルトでtrueですので、当方システム側の設定に問題があるがため、終了すべきロールバックが終了しないための問題ということでしょうか? 試しにロールバックをfalseにすると、商品購入後カート内商品は削除されておりますが、実際はどうあるべきなのでしょうか? |
nanasess |
投稿日時: 2022/2/23 2:41
対応状況: −−−
|
神 登録日: 2006/9/9 居住地: 投稿: 2313 |
Re: 商品を購入後にカート内の商品情報が削除されないです。 このロールバックの仕組みは、クレジットカードなどの決済する際、決済が完了せずに離脱した場合にカートを復元するものです。
詳しくデータベースのデータを見てみないと何ともいえませんが、注文が完了していないと判断されてしまっていると思われます。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |