【ECCUBE3プラグイン開発】商品をカートへ入れる際の重複チェック処理


カートへ商品を入れる際に、イベントフックで処理をしたいというときの実装方法とカート画面へのエラーラベル表示方法についてです。

因みに、ユーザ辺りに対する1商品の購入個数の上限制限は「商品マスター 」―「販売制限数」で設定できます。

1.event.ymlでカートへ入れた後の割り込み処理を定義します。


front.product.detail.complete:
- [onProductCartAddComplate, NORMAL]

2.フック処理を記載します。


/**
* カート購入後処理
* @param EventArgs $event
*/

public function onProductCartAddComplate(EventArgs $event){
$app = $this->app;
// カート情報取得
$cart = $app['eccube.service.cart']->getCart();
// カートアイテム
foreach ($cart->getCartItems() as $CartItem) {
$ProductClass = $CartItem->getObject();
// カートに入れた商品を削除
$app['eccube.service.cart']->removeProduct($ProductClass->getId());
}
}

カート購入処理後は、カート画面に遷移しますが、そこでエラー表示させたい場合は


$app['eccube.service.cart']->setError(【メッセージラベル】);

となります。

【メッセージラベル】は、src/Resource/locale/message.ja.ymlにて定義されています。