# Hersteller im Checkout anzeigen

**URL:** <https://forum.shopware.com/t/hersteller-im-checkout-anzeigen/96566>\
**Category:** Shopware 6 (German)\
**Created:** [6. Oktober 2022 um 14:13 UTC](https://forum.shopware.com/t/hersteller-im-checkout-anzeigen/96566 "2022-10-06T14:13:59Z")\
**Posts on this page:** 8\
**Page:** 1

<div class="post-metadata">

**Author:** ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)\
**Post date:** [6. Oktober 2022 um 14:13 UTC](https://forum.shopware.com/t/hersteller-im-checkout-anzeigen/96566/1 "2022-10-06T14:13:59Z")

</div>

Hallo,

ich möchte den Hersteller für jedes Produkt im Warenkorb anzeigen lassen. In `lineItem.payload` gibt es nur `manufacturerId`. Wie kann ich die Daten um den Herstellernamen erweitern?

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [6. Oktober 2022 um 15:07 UTC](https://forum.shopware.com/t/hersteller-im-checkout-anzeigen/96566/2 "2022-10-06T15:07:36Z")

</div>

Falls die Daten nicht zur Verfügung stehen, dann per Subscriber das entsprechende Event heraussuchen und den Hersteller per addAssociation dem Criteria hinzufügen.

---

<div class="post-metadata">

**Author:** ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)\
**Post date:** [7. Oktober 2022 um 08:17 UTC](https://forum.shopware.com/t/hersteller-im-checkout-anzeigen/96566/3 "2022-10-07T08:17:42Z")

</div>

```auto
public static function getSubscribedEvents(): array
{
    return [
        CheckoutCartPageLoadedEvent::class => 'onCheckoutPageLoaded'
    ];
}

```

```auto
/**
 * Calls onCheckoutPagesRefresh for handling stuff in all checkout pages
 *
 * @param CheckoutCartPageLoadedEvent $event
 */
public function onCheckoutPageLoaded(CheckoutCartPageLoadedEvent $event) : void
{
    $this->onCheckoutPagesRefresh($event);
    $event->getCriteria()->addAssociation('manufacturer');
}

```

Dieser Subscriber sollte es doch sein, oder? Aber `addAssociation('manufacturer')` geht schief. Wie ruft man dass richtig auf?

---

<div class="post-metadata">

**Author:** ![Max\_Shop](https://avatars.discourse-cdn.com/v4/letter/m/58f4c7/32.png) [@Max\_Shop](https://forum.shopware.com/u/Max_Shop)\
**Post date:** [7. Oktober 2022 um 08:28 UTC](https://forum.shopware.com/t/hersteller-im-checkout-anzeigen/96566/4 "2022-10-07T08:28:42Z")

</div>

Ich glaube nicht, dass es das richtige Event ist. Ohne mich lange einzulesen kann dich dir leider nicht weiter helfen.

Zum Punkt $event-\>getCriteria()-\>addAssociation(‚manufacturer‘); kann ich dir aber sagen: du musst immer schauen, was deine Referenz ist. Bei dieser Methode müsste die Referenz das ProductEntity sein. Deinem Event nach ist die Referenz aber eher das CartEntity (falls es das überhaupt gibt).

Du müsstest also eine Kette bilden im Sinne von Cart\>LineItem-\>Product-\>Manufacturer (Kette frei erfunden).

Aber wie gesagt, ohne selbst einzulesen kann ich dazu leider nicht viel sagen und dir das Vorgehen nur beispielhaft skizzieren.

---

<div class="post-metadata">

**Author:** ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)\
**Post date:** [7. Oktober 2022 um 08:53 UTC](https://forum.shopware.com/t/hersteller-im-checkout-anzeigen/96566/5 "2022-10-07T08:53:15Z")

</div>

Naja, wird wohl etwas mit der vorhandenen `manufacturerId` zutun haben?

---

<div class="post-metadata">

**Author:** ![abdullah](https://avatars.discourse-cdn.com/v4/letter/a/aeb1de/32.png) [@abdullah](https://forum.shopware.com/u/abdullah)\
**Post date:** [7. Oktober 2022 um 09:32 UTC](https://forum.shopware.com/t/hersteller-im-checkout-anzeigen/96566/6 "2022-10-07T09:32:37Z")

</div>

Ich würde empfehlen eine Twig Funktion zu implementieren, womit du anhand der ManufacturerId die Manufacturers erhälst.

---

<div class="post-metadata">

**Author:** ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)\
**Post date:** [7. Oktober 2022 um 13:47 UTC](https://forum.shopware.com/t/hersteller-im-checkout-anzeigen/96566/7 "2022-10-07T13:47:12Z")

</div>

```auto
private function onCheckoutPagesRefresh ($event)
{
    //do something in the checkout
    $myLineItems = $event->getPage()->getCart()->getLineItems();
    
    foreach ($myLineItems as $item) {
        $item->setPayloadValue('test1', 'test1');
    }
}

```

So, nun bekomme ich zumindest den Payload für jedes LineItem erweitert. Wie komme ich hier aber an die Herstellerdaten? Mir fehlt gerade die Verbindung zu `addAssociation(‚manufacturer‘)`.

---

<div class="post-metadata">

**Author:** ![Frank\_2812](https://avatars.discourse-cdn.com/v4/letter/f/b19c9b/32.png) [@Frank\_2812](https://forum.shopware.com/u/Frank_2812)\
**Post date:** [8. Oktober 2022 um 09:00 UTC](https://forum.shopware.com/t/hersteller-im-checkout-anzeigen/96566/8 "2022-10-08T09:00:27Z")

</div>

So, jetzt klappt es. Falls jemand mal das gleiche Problem hat:

```auto
private function onCheckoutPagesRefresh ($event)
{
    //do something in the checkout
    $myLineItems = $event->getPage()->getCart()->getLineItems();
    
    foreach ($myLineItems as $lineItem) {
        $product = $this->getProductById($lineItem->getReferencedId(), $event->getContext());
        if ($product->getManufacturer()) $lineItem->setPayloadValue('manufacturerName', $product->getManufacturer()->getName());
    }
}

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

```
