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