バージョン選択

フォーラム

メニュー

オンライン状況

42 人のユーザが現在オンラインです。 (34 人のユーザが フォーラム を参照しています。)
登録ユーザ: 0
ゲスト: 42
もっと...

サイト内検索

プラグイン > バグ報告・利用に関する質問 > 同じ商品の別の規格をカートに入れさせないようにしたい

バグ報告・利用に関する質問

新規スレッドを追加する

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
beginner99
投稿日時: 2025/3/19 14:26
対応状況: −−−
常連
登録日: 2024/6/4
居住地:
投稿: 45
同じ商品の別の規格をカートに入れさせないようにしたい
▼テンプレート
[EC-CUBE]4.1
[現象]
同じ商品の別の規格をカートに入れさせないようにしたいと考えております。

app\Customize\Service\CustomCartService.php
を作成することで対応したいと考えております。
しかしながら ソースのどこかを間違っていると思われ、
上手く機能しません。

1)
プログラム上、間違っている部分がありましたら教えてほしいです。

2)
デバッグ やログを出力したいのですが、方法を教えて頂けると助かります。

3)
同じ商品がある場合、エラー文を表示させる方法を知りたい。

ソースは下記になります。

app\Customize\Service\CustomCartService.php

class CustomCartService extends CartService
{
protected $cartItemRepository;
protected $session;
protected $translator;

// 適用する商品IDリスト
private $targetProductIds = [54]; // 例: 商品ID 54 に適用

public function __construct(
CartItemRepository $cartItemRepository,
SessionInterface $session,
TranslatorInterface $translator
) {
parent::__construct($cartItemRepository, $session, $translator);
$this->cartItemRepository = $cartItemRepository;
$this->session = $session;
$this->translator = $translator;
}

/**
*
* @throws InvalidItemException
*/

public function addProduct($ProductClass, $quantity = 1)
{
$Product = $ProductClass->getProduct(); // ProductClass から Product を取得

// 特定の商品にのみ適用
if (in_array($Product->getId(), $this->targetProductIds)) {
$cartItems = $this->getCart()->getCartItems();

foreach ($cartItems as $cartItem) {
if ($cartItem->getProduct()->getId() === $Product->getId()) {
if ($cartItem->getProductClass()->getId() !== $ProductClass->getId()) {
// 異なる商品規格がカートにある場合、追加をブロック
return false;
}
}
}
}
return true;
}

}
h_tanaka
投稿日時: 2025/3/19 14:32
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1969
Re: 同じ商品の別の規格をカートに入れさせないようにしたい
導入済みのプラグインで addProduct() を制御されていないでしょうか?


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

beginner99
投稿日時: 2025/3/19 14:43
対応状況: −−−
常連
登録日: 2024/6/4
居住地:
投稿: 45
Re: 同じ商品の別の規格をカートに入れさせないようにしたい
返信ありがとうございます。

再注文プラグインで、
ReOrderController というコントローラーがあり、
そこで

private function addProduct($order_no, OrderItem $OrderDetail, ProductClass $productClass)

とありましたが、引数が 3つと多いため、違うような気がするのですが、いかがでしょうか。

他のプラグインでは見当たりませんでした。
mcontact
投稿日時: 2025/3/19 15:04
対応状況: −−−
登録日: 2022/1/22
居住地:
投稿: 1684
Re: 同じ商品の別の規格をカートに入れさせないようにしたい
2)
デバッグ やログを出力したいのですが、方法を教えて頂けると助かります。


EC-CUBEには、デバッグモードがあり公式ドキュメントにも記載されていますので参考にすると良いと思います。
https://doc4.ec-cube.net/debug_mode


----------------
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
EC-CUBEインテグレートパートナー【ゴールド】ランク
M&I Works
URL: https://miworks.biz/
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

beginner99
投稿日時: 2025/3/19 15:14
対応状況: −−−
常連
登録日: 2024/6/4
居住地:
投稿: 45
Re: 同じ商品の別の規格をカートに入れさせないようにしたい
ご返信ありがとうございます。

デバッグモードで log_info を使い 処理がどのように進んでいるのか
確認しようと思いましたが、
カート追加が ajax通信のせいか ログには出力されませんでした。

ajax通信でも log_info でログに出力できますでしょうか。
h_tanaka
投稿日時: 2025/3/19 15:20
対応状況: −−−
登録日: 2016/7/22
居住地: 愛媛県
投稿: 1969
Re: 同じ商品の別の規格をカートに入れさせないようにしたい
dump() でデバッグしてみてください。
https://doc4.ec-cube.net/reverse-lookup/tips

ajax の場合はブラウザの開発者ツールでデバッグできます。
https://qiita.com/enutake/items/9721503ca6a18febd894


----------------
EC-CUBE 《プラチナ》ランクパートナー
トエビス株式会社 田中 宏典
EC-CUBEの機能やデザインのカスタマイズ承ります。

tattsu
投稿日時: 2025/3/22 10:21
対応状況: −−−
仙人
登録日: 2023/12/23
居住地:
投稿: 413
Re: 同じ商品の別の規格をカートに入れさせないようにしたい

>if ($cartItem->getProduct()->getId() === $Product->getId()) {

CartItemにgetProduct()というメソッドはなかったと思います。(自分でカスタマイズ追加していなければ)

>ajax通信でも log_info でログに出力できますでしょうか。

ajaxでもlog_infoでログ出力されますよ。


----------------
-------------------

各決済会社3Dセキュア実装・EC-CUBEバージョンアップ・不具合修正
お任せください。ゴールドパートナー。

スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ


 



ログイン


EC-CUBE公式 Amazon Payプラグイン

統計情報

総メンバー数は104,359名です
総投稿数は112,461件です

投稿数ランキング

1
seasoft
7369
2
468
3217
3
AMUAMU
2712
4
nanasess
2330
5
umebius
2085
6
h_tanaka
1969
7
yuh
1900
8
mcontact
1684
9
red
1580
10
tsuji
958
11
fukap
907
12
shutta
835
13
tao_s
805
14 ramrun 789
15 karin 689
16 sumida 641
17
homan
633
18 DELIGHT 572
19
patapata
502
20
balisys
502


ネットショップの壺

EC-CUBEインテグレートパートナー

Copyright© EC-CUBE CO.,LTD. All Rights Reserved.