Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.

...

Für die Merkliste sollte die Ansicht "Bestellprozess: Merkliste" aus dem Shop-Theme auf der Seite mit dem shortlink "wishlist" platziert werden.

Eine CartEntity definieren

Es ist in bestimmten Fällen sinnvoll, eine eigene CartEntity zu definieren. Hauptsächlich ist das wichtig, wenn man nicht direkt mit einem shopSessionArticle arbeitet und dennoch einen Eintrag im Warenkorb / Merkliste / etc. darstellen, und dessen Eventstrucktur verwendent möchte.

Um eine CartEntity zu definieren, muss man eine Klasse definieren, welche das Interface \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartEntityInterface implementiert. Idealerweise leitet diese Klasse dann auch von \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartEntityAbstract ab, um zukünftige Änderungen am Interface leichter vom Produkt migriert zu bekommen.

Zusätzlich sollte diese Entität dann über das Event \Brandbox\ShopCore\Shop\Checkout\lib\event\OnPopulateCartEntities zu den $entities hinzugefügt werden. Danach kann diese Entität, zusammen mit anderen Arten, über \Brandbox\ShopCore\Shop\Checkout\Manager::getCartEntities abgerufen werden. In OnPopulateCartEntities  sollte immer der mitgegebene $context geprüft werden. Wenn die Entität zum Beispiel nur auf der Merkliste dargestellt werden sollt, muss geprüft werden, dass der Kontext \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartContextWishlist entspricht.

Meistens ist er auch sinnvoll, eine eigene Kontextklasse zu definieren. Diese sollte dann von \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartContextAbstract ableiten und Checkout\Manager::getCartEntities mitgegeben werden. Das ist notwendig, wenn nur Entitäten dieses Typs zurückgeliefert werden sollen. Auch notwendig ist es, auf diesen Kontext in OnPopulateCartEntities  zu reagieren.

Events

Die Benennung innerhalb der Events orientiert sich an folgender Terminologie.

...

EinstiegspunktBeschreibung
\Brandbox\ShopCore\Shop\Checkout\Manager::getCartEntitiesLiefert alle CartEntities zurück, welche über \Brandbox\ShopCore\Shop\Checkout\lib\event\OnPopulateCartEntities hinzugefügt werden.
Die Filterung der Einträge geschieht dann über die Mitgabe der richtigen \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartContextAbstract Kontextklasse. Zum Beispiel fügt der Shop eine Entität nur hinzu, wenn zum Beispiel der Kontext \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartContextSessionBasket mitgegeben wurde.
\Brandbox\ShopCore\View\Basket\lib\Subscriber\ViewBasketSubscriber::getSubscribedEventsAuflistung der Hauptevents der Standardimplementation des Warenkorbs
\Brandbox\ShopCore\View\Wishlist\lib\Subscriber\ViewWishlistSubscriber::getSubscribedEventsAuflistung der Hauptevents der Standardimplementation der Merkliste
\Brandbox\ShopCore\View\CartSessionArticle\Lib\Subscriber*Auflistung des Integrationsevents des CartSessionArticles in die einzelnen Views. Hier werden tatsächliche Werte eines shopSessionArticles verarbeitet und ausgegeben.

Eine CartEntity definieren

Es ist in bestimmten Fällen sinnvoll, eine eigene CartEntity zu definieren. Hauptsächlich ist das wichtig, wenn man nicht direkt mit einem shopSessionArticle arbeitet und dennoch einen Eintrag im Warenkorb / Merkliste / etc. darstellen, und dessen Eventstrucktur verwendent möchte.

Um eine CartEntity zu definieren, muss man eine Klasse definieren, welche das Interface \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartEntityInterface implementiert. Idealerweise leitet diese Klasse dann auch von \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartEntityAbstract ab, um zukünftige Änderungen am Interface leichter vom Produkt migriert zu bekommen.

Zusätzlich sollte diese Entität dann über das Event \Brandbox\ShopCore\Shop\Checkout\lib\event\OnPopulateCartEntities zu den $entities hinzugefügt werden. Danach kann diese Entität, zusammen mit anderen Arten, über \Brandbox\ShopCore\Shop\Checkout\Manager::getCartEntities abgerufen werden. In OnPopulateCartEntities  sollte immer der mitgegebene $context geprüft werden. Wenn die Entität zum Beispiel nur auf der Merkliste dargestellt werden sollt, muss geprüft werden, dass der Kontext \Brandbox\ShopCore\Shop\Checkout\lib\Struct\CartContextWishlist entspricht.

...

.