カートへ商品を入れる際に、イベントフックで処理をしたいというときの実装方法とカート画面へのエラーラベル表示方法についてです。
因みに、ユーザ辺りに対する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にて定義されています。