Herstellername im Payload

Hallo,

ich brauche im Checkout den Herstellernamen und erweitere deshalb den Payload:

/**
     * Handles the stuff, that happens in both checkout pages
     *
     * @param CheckoutCartPageLoadedEvent|CheckoutConfirmPageLoadedEvent $event
     */
    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;
    }

Grundsätzlich klappt dass soweit gut. Wenn ich allerdings auf eine andere Sprache umschalte, liefert $product->getManufacturer()->getName() eine leere Zeichenkette. Wenn ich $product->getManufacturer() debugge, ist der Name dort auch leer, es gibt aber ein translated Object, dass den Herstellernamen enthält.

Hat jemand einen Tipp, wie ich daran kommen kann?

Viele Grüße, Frank

Okay, habe es selbst gefunden:

$product->getManufacturer()->getTranslation('name')

Das liefert den Herstellernamen, auch wenn eine andere Sprache eingestellt ist (Fallback). :slightly_smiling_face:

1 Like