getDomain und addExtension verlängern den Variablen-Path um Domain-Namen zusätzlich

Hallo,

Wenn ich meine Plugin-Konfiguration an die Storefront Engine übergeben möchte, erhalte ich leider nicht die richtigen Domain-Pfade um die Variablen mit Twig aufzurufen…

 

Hier ein stark reduziertes und verinfachtes Beispiel vom Subscriber:

public function onStorefrontRender(StorefrontRenderEvent $event)
{

	// get config
	$config = $this->systemConfigService->getDomain('prefixPluginName.config.', $event->getSalesChannelContext()->getSalesChannel()->getId(), true);


	// add config
	$event->getContext()->addExtension('prefixPluginName', new ArrayEntity('config' => $config));
}

 

In Twig stehen mir dann die Infos folgendermaßen zur Verfügung:
 

{{ context.context.extensions['prefixPluginName'].config.prefixPluginName.configelementname }}

Dabei sollte der Pfad eigentlich so sein:

{{ context.context.extensions['prefixPluginName'].config.configelementname }}

 

Wenn ich mir die Konfiguration mit der get-Methode hole passiert das nicht. Nur mit getDomain(), was halt super praktisch ist, da man nicht jedes Element manuell holen muss. Was mache ich falsch?

hast du mal

{{ dump(shopware.config) }}

ausprobiert? :wink:

1 „Gefällt mir“

ja habe ich und jetzt? Sticking-out-tongue
Da habe ich die Pfade ja her, also aus dem dump()

Hallo,

was Moorleiche vermutlich sagen wollte: Du brauchst dich eigentlich nicht selber darum kümmern, die Config über eine Extension an die Storefront weiterzugeben, da sie eigentlich unter “shopware.config” direkt im Template verfügbar sein sollte.

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 „Gefällt mir“

Okay, das muss ich mir dann nochmal anschauen.

Ist die Plugin-Config dann in jedem Controller verfügbar? In Shopware 5 musste man ja in einem oder mehrern Events per Subscriber die Config an die Storefront übergeben.

ja, die Config steht überall im Template global zur Verfügung. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

Das war mir neu… steht das irgendwo in einer Doku?

Besteht die Möglichkeit aus einem Subscriber heraus auf die automatisch angelegte Konfiguration unter shopware.config zuzugreifen und zu verändern?

Ich steuere durch eine Config, auf welchen Seiten / Controllern das Plugin dargestellt wird. Diese Frage ich im Subscriber ab und manipulier(t)e die Übergabe der Variablen an die Storefront. 

Hallo,

du kannst wie folgt auf Shopware Config über Twig zugreifen:

twig = $twig;
    }

    public static function getSubscribedEvents(): array
    {
        return [
            StorefrontRenderEvent::class => 'onProductPageLoaded',
        ];
    }

    public function onProductPageLoaded(StorefrontRenderEvent $event)
    {
        $globals = $this->twig->getGlobals();
        $shopwareConfig = $globals['shopware']['config'];
        echo 'Subscriber.php Zeile: 32';
        echo '';
        print_r($shopwareConfig);
        echo '';
        exit();
    }
}

Viele Grüße aus Schöppingen

cool Michael Telgmann