【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にて定義されています。


投稿者: cova

ザムウ取締役CTO。2010年に大阪から香川へ移住しフリーランスSEとして活動をはじめる。領域としてWeb系から組込み系+サーバ構築。中小企業基盤整備機構にて中小企業の経営支援と、小学校にてICT講習を務める。2021年現在、子育て支援NPO理事、短大専任講師を兼任する。 【主な資格】経営学修士(MBA)修了、国家試験応用情報技術者、国内初の夫婦ITコーディネーター。 その他、2021年4月:2児(3歳・0歳)の父に就任。 #赤ちゃんから学ぶ経営学 を配信。