Extending services für bestimmte Controller / actions

Hallo zusammen, wir haben eine Frage zum extending der Services.
Wir möchten den ListProductService erweitern, ABER wir benötigen keine erweiterung (die zusätzliche daten abruft) auf den checkout -Seiten.

Gibt es eine möglichkeit, die ausdehnung auf bestimmte Controller / Action zu beschränken?

Wenn wir die services.xml implementieren, scheint der Service auf jeder Seite zu erweitern:

 

 

 

Hallo Sition,

versuche mal folgendes (ungetestet)

und dann der Decorator:

namespace SwagFoo;

use Shopware\Bundle\StoreFrontBundle\Service\ListProductServiceInterface;
use Shopware\Bundle\StoreFrontBundle\Struct;

class ListProductServiceDecorator implements ListProductServiceInterface
{
    /**
     * @var ListProductServiceInterface
     */
    private $coreListProductService;

    /**
     * @var \Enlight_Controller_Front
     */
    private $front;

    public function __construct(ListProductServiceInterface $coreListProductService, \Enlight_Controller_Front $front)
    {
        $this->coreListProductService = $coreListProductService;
        $this->front = $front;
    }

    public function getList(array $numbers, Struct\ProductContextInterface $context)
    {
        if ($this->front->Request()->getControllerName() === 'checkout') {
            return $this->coreListProductService->getList($numbers, $context);
        }

        // return custom stuff
    }

    public function get($number, Struct\ProductContextInterface $context)
    {
        if ($this->front->Request()->getControllerName() === 'checkout') {
            return $this->coreListProductService->get($number, $context);
        }

        // return custom stuff
    }
}

So prüfst du im Request, welcher Controller aufgerufen wird und kannst dann entsprechend reagieren.

Viele Grüße aus Schöppingen

cool Michael Telgmann