From 1803a92f5f214fa7e83c9aa445bdd33802603c4d Mon Sep 17 00:00:00 2001 From: Dominik Pfaffenbauer Date: Tue, 13 Jul 2021 14:25:24 +0200 Subject: [PATCH] [Order] add proper events for cart-item add and remove --- docs/03_Development/14_Events/README.md | 10 ++++---- .../Component/Order/Cart/CartModifier.php | 15 ++++++++++-- src/CoreShop/Component/Order/CartEvents.php | 24 +++++++++++++++++++ 3 files changed, 42 insertions(+), 7 deletions(-) create mode 100644 src/CoreShop/Component/Order/CartEvents.php diff --git a/docs/03_Development/14_Events/README.md b/docs/03_Development/14_Events/README.md index 745f2900cb..0eb8c24ab1 100644 --- a/docs/03_Development/14_Events/README.md +++ b/docs/03_Development/14_Events/README.md @@ -18,10 +18,10 @@ CoreShop comes with a lot of build-in events. | Name | EventType | Description | |:-----|:------------|:----------| | `coreshop.cart.update` | GenericEvent | Fires after cart has been updated | -| `coreshop.cart.item_add_pre` | GenericEvent | Fires before a item gets added to cart | -| `coreshop.cart.item_add_post` | GenericEvent | Fires after a item gets added to cart | -| `coreshop.cart.item_remove_pre` | GenericEvent | Fires before a item gets removed from cart | -| `coreshop.cart.item_remove_post` | GenericEvent | Fires after a item gets removed from cart | +| `coreshop.cart.pre_add_item` | GenericEvent | Fires before a item gets added to cart | +| `coreshop.cart.post_add_item` | GenericEvent | Fires after a item gets added to cart | +| `coreshop.cart.pre_remove_item` | GenericEvent | Fires before a item gets removed from cart | +| `coreshop.cart.post_remove_item` | GenericEvent | Fires after a item gets removed from cart | ## Customer @@ -120,4 +120,4 @@ Replace symbol (*) with one of those controller: There are events vor every state machine transition. Read more about it [here](../17_State_Machine/README.md). ## Model Events -You can use Pimcore Events for CoreShops Pimcore Models: [Pimcore Events](https://www.pimcore.org/docs/5.0.0/Extending_Pimcore/Event_API_and_Event_Manager.html) \ No newline at end of file +You can use Pimcore Events for CoreShops Pimcore Models: [Pimcore Events](https://www.pimcore.org/docs/5.0.0/Extending_Pimcore/Event_API_and_Event_Manager.html) diff --git a/src/CoreShop/Component/Order/Cart/CartModifier.php b/src/CoreShop/Component/Order/Cart/CartModifier.php index feffb821bc..ff65b715d8 100644 --- a/src/CoreShop/Component/Order/Cart/CartModifier.php +++ b/src/CoreShop/Component/Order/Cart/CartModifier.php @@ -14,6 +14,7 @@ namespace CoreShop\Component\Order\Cart; +use CoreShop\Component\Order\CartEvents; use CoreShop\Component\Order\Model\OrderInterface; use CoreShop\Component\Order\Model\OrderItemInterface; use CoreShop\Component\StorageList\Model\StorageListInterface; @@ -56,7 +57,7 @@ public function removeFromList(StorageListInterface $storageList, StorageListIte $this->eventDispatcher->dispatch( new GenericEvent($storageList, ['item' => $item]), - 'coreshop.cart.remove_add_pre' + CartEvents::PRE_REMOVE_ITEM ); $storageList->removeItem($item); @@ -64,7 +65,7 @@ public function removeFromList(StorageListInterface $storageList, StorageListIte $this->eventDispatcher->dispatch( new GenericEvent($storageList, ['item' => $item]), - 'coreshop.cart.remove_add_post' + CartEvents::POST_REMOVE_ITEM ); } @@ -85,6 +86,16 @@ private function resolveItem(StorageListInterface $storageList, StorageListItemI } } + $this->eventDispatcher->dispatch( + new GenericEvent($storageList, ['item' => $storageListItem]), + CartEvents::PRE_ADD_ITEM + ); + $storageList->addItem($storageListItem); + + $this->eventDispatcher->dispatch( + new GenericEvent($storageList, ['item' => $storageListItem]), + CartEvents::POST_ADD_ITEM + ); } } diff --git a/src/CoreShop/Component/Order/CartEvents.php b/src/CoreShop/Component/Order/CartEvents.php new file mode 100644 index 0000000000..e022deadc2 --- /dev/null +++ b/src/CoreShop/Component/Order/CartEvents.php @@ -0,0 +1,24 @@ +