Checkout payload description

Hallo,

ich versuche im Checkout die lineItems um die Produktbeschreibung zu erweitern.

Jedoch steht im lineItems.payload die description auf null.

Übersehe ich hier etwas oder gibt es eine andere Möglich die Beschreibung anzeigen zu lassen?

Vielen Dank für eure Hilfe.

Grüße

Micha

Hallo Micha,

Wie versuchst du es zu erweitern?

Ansonsten: ReferenceId zeigt auf den Artikel. Je nachdem wo du bist kannst du, wenn du die LineItems aus der Repository ziehst, eine Assoziation hinzufügen.

Zsolt

Danke für die schnelle Antwort!

Ich versuche es direkt im Template.

 {{ lineItem.payload.description }}

Die CustomField kann ich schön auslesen, aber Hersteller und Beschreibung sind so nicht erreichbar.

Gibt es dort eine Möglichkeit?

Sprich, du hast die description schon in die payload injiziert und bekommst sie nur nicht ausgelesen?

Oder fragst du danach, wie du die description da reinbekommst? An letzterem saß ich grad gestern: https://forum.shopware.com/discussion/71174/individuelle-produktparameter-durch-den-checkout-durchschleifen#latest

Achte aber darauf, dass du den Text erwischt und nicht einen translation-object.

 

1 „Gefällt mir“

Super, hat funktioniert. Vielen Dank.

Mit dieser Funktion konnte ich jetzt die Beschreibung auslesen, dies funktioniert aber leider nicht mit dem Hersteller. Es schmeißt mir nur null aus.

 $product = $this-\>getProductById($lineItem-\>getReferencedId(), $event-\>getContext()); $description = $product-\>getDescription(); $manufacturer = $myProduct-\>getManufacturer(); // Hier kommt nur null raus...

 private function getProductById($productId, $context) { $product = $this-\>productRepository-\>search( new Criteria([$productId]), $context )-\>getEntities()-\>first(); return $product; }

@michawerneke schrieb:

Super, hat funktioniert. Vielen Dank.

Mit dieser Funktion konnte ich jetzt die Beschreibung auslesen, dies funktioniert aber leider nicht mit dem Hersteller. Es schmeißt mir nur null aus.

$product = $this->getProductById($lineItem->getReferencedId(), $event->getContext()); $description = $product->getDescription(); $manufacturer = $myProduct->getManufacturer(); // Hier kommt nur null raus…

private function getProductById($productId, $context) { $product = $this->productRepository->search( **(**new Criteria([$productId]) )->addAssociation(‚manufacturer‘), $context )->getEntities()->first(); return $product; }

 

 

Aus Performancegründen werden nicht immer alle Daten mitgeladen, du musst die Assoziationen angeben. 

Probier mal addAssociation(), wie oben im Code gezeigt. Achte auf die Klammern um new Criteria() herum. Details gibt’s hier: https://docs.shopware.com/en/shopware-platform-dev-en/developer-guide/database#enriching-results-with-associations

Danke. Leider bekomme ich folgenden Fehler:

“Unable to save payload with id manufacturer on line item 3ac014f329884b57a2cce5a29f34779c. Only scalar data types are allowed.”

Du versuchst ja auch ein Entity Objekt zu speichern, aber du kannst nur Strings oder Arrays nutzen.

1 „Gefällt mir“

Danke.

 getManufacturer()-\>getName();

Imho könntest du dir die Mühe fast schon sparen, da das Teil der “Essential Characteristics” ist, die mit 6.3.1.0 im Core enthalten sein werden. Damit kann der User quasi ein Line-Item Template pro Artikel definieren und damit auch bspw. die Beschreibung im Checkout anzeigen lassen. Wahrscheinlich wäre es dann nur noch etwas Templating, wenn man das besonders darstellen will.

1 „Gefällt mir“