Von Klasse AdditionalTextService die Methode buildTextDynamic Hooken

Hallo zusammen,

ich würde gerne die Private Methode buildTextDynamic in der Klasse AdditionalTextService Hooken.

(’\engine\Shopware\Bundle\StoreFrontBundle\Service\Core\AdditionalTextService.php’)

Ich bekomme ich es mit der Standard Anleitung noch nicht gebacken.

Es wäre super wenn ich ein paar Anreize bekommen könnte wie ich das ganze angehen kann.

MfG,

ipsKenni

 

Du musst es dekorieren siehe dazu Service extensions

Hey,

danke für deine schnelle Antwort.

Ich habe das Beschriebene getestet komme aber eben nicht darauf was ist falsch mache.

Ordnerstruktur:

  • TestCardAttribute.php
  • Resources\service.xml
  • Bundle\StoreFrontBundle\AdditionalTextService.php

 

service.xml:

AdditionalTextService.php:

configuratorService = $configuratorService;
    }

    /**
     * {@inheritdoc}
     */
    public function buildAdditionalText(ListProduct $product, ShopContextInterface $context)
    {
        $products = $this->buildAdditionalTextLists([$product], $context);

        return array_shift($products);
    }

    /**
     * {@inheritdoc}
     */
    public function buildAdditionalTextLists($products, ShopContextInterface $context)
    {
        $required = [];
        foreach ($products as &$product) {
            if (!$product->getAdditional()) {
                $required[] = $product;
            }
        }

        if (empty($required)) {
            return $products;
        }

        $configurations = $this->configuratorService->getProductsConfigurations(
            $required,
            $context
        );

        /** @var $required ListProduct[] */
        foreach ($required as &$product) {
            if (!array_key_exists($product->getNumber(), $configurations)) {
                continue;
            }

            $config = $configurations[$product->getNumber()];

            $product->setAdditional($this->buildTextDynamic($config));
        }

        return $products;
    }

    /**
     * @param Group[] $configurations
     *
     * @return string
     */
    private function buildTextDynamic($configurations)
    {
        $text = [];
        foreach ($configurations as $group) {
            foreach ($group->getOptions() as $option) {
                $text[] = $option->getName();
            }
        }
        return implode(', ', $text);
    }
}