# Header Pagelet - Assign Variable ausgeben

**URL:** <https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902>\
**Category:** Programmierung\
**Created:** [6. Juni 2019 um 13:46 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902 "2019-06-06T13:46:24Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![DenKon26](https://avatars.discourse-cdn.com/v4/letter/d/5e9695/32.png) [@DenKon26](https://forum.shopware.com/u/DenKon26)\
**Post date:** [6. Juni 2019 um 13:46 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/1 "2019-06-06T13:46:24Z")

</div>

Hallo!

&nbsp;

Ich teste gerade die neue Pluginentwicklung.

In einem Subscriber versuche ich mir bestimmte Daten an die View zu geben:

&nbsp;

```
class FrontendSubscriber implements EventSubscriberInterface
{
    const CONFIG_NAMESPACE = 'CompraSW6Test.config.';

    /**
     * @var SystemConfigService
     */
    private $systemConfigService;

    public function __construct(SystemConfigService $systemConfigService)
    {
        $this->systemConfigService = $systemConfigService;
    }

    public static function getSubscribedEvents()
    {
        return [
            HeaderPageletLoadedEvent::NAME => 'onHeaderPageletLoaded'
        ];
    }

    /**
     * @param HeaderPageletLoadedEvent $event
     * @throws \Shopware\Core\System\SystemConfig\Exception\InvalidDomainException
     */
    public function onHeaderPageletLoaded(HeaderPageletLoadedEvent $event)
    {
        if (!$this->systemConfigService->get('CompraSW6Test.config.active')) {
            return;
        }

        $pluginConfig = $this->systemConfigService->getDomain(self::CONFIG_NAMESPACE);
        $event->getPagelet()->assign($pluginConfig);
    }
}

```

&nbsp;Die Daten kommen auch in der View an. Wenn ich mir die Variablen mit {{ dump() }} ausgeben lasse, wird mir folgendes angezeigt:

```
array:9 [▼
  "page" => NavigationPage {#3106 ▼
    #cmsPage: CmsPageEntity {#3114 ▶}
    #header: HeaderPagelet {#2050 ▼
      -navigation: Tree {#2825 ▶}
      -offcanvasNavigation: Tree {#2975 ▶}
      -languages: LanguageCollection {#3006 ▶}
      -currencies: CurrencyCollection {#3048 ▶}
      -activeLanguage: LanguageEntity {#3007 ▶}
      -activeCurrency: CurrencyEntity {#1047 ▶}
      -serviceMenu: CategoryCollection {#2124 ▶}
      #extensions: []
      +"CompraSW6Test.config.active": true
      +"CompraSW6Test.config.customText": "custom text"
      +"CompraSW6Test.config.readonlyText": "readonly"
      +"CompraSW6Test.config.selectColor": "red"
      +"CompraSW6Test.config.selectStyle": array:1 [▶]
    }
    #footer: FooterPagelet {#3062 ▶}
    #context: SalesChannelContext {#1632 ▶}
    #extensions: []
  }
  "shopware" => array:3 [▶]
  "controllerName" => "Navigation"
  "controllerAction" => "home"
  "context" => SalesChannelContext {#1632 ▶}
  "activeRoute" => "frontend.home.page"
  "formViolations" => null
  "app" => AppVariable {#268 ▶}
  "isHMRMode" => false

```

&nbsp;

Ich versuche nun verzweifelt mir die Variable für den CustomText im Header ausgeben zu lassen, allerdings wird nichts ausgegeben:

```
{% sw_extends '@Storefront/layout/header/top-bar.html.twig' %}

{% block layout_header_top_bar_language %}
    {{ page.header.CompraSW6Test.config.customText }}
    {% if context.customer %}

        
            
                {{ 'compra-sw6test.index.salutationText'|trans }} {{ context.customer.firstName }} {{ context.customer.lastName }}
                    (Abmelden)
            
        
    {% endif %}
    {{ parent() }}
{% endblock %}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [6. Juni 2019 um 17:45 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/2 "2019-06-06T17:45:26Z")

</div>

Kann das reproduzieren… sehe meine Variablen auch im dump, kann diese allerdings ebenfalls nicht ausgeben…&nbsp;

---

<div class="post-metadata">

**Author:** ![Rainware](https://avatars.discourse-cdn.com/v4/letter/r/f07891/32.png) [@Rainware](https://forum.shopware.com/u/Rainware)\
**Post date:** [6. Juni 2019 um 19:43 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/3 "2019-06-06T19:43:10Z")

</div>

Die Keys sind das Problem bei dir&nbsp;

Denn du willst nicht:&nbsp;page.header.CompraSW6Test.config.customTex

sondern: page.header[‘CompraSW6Test.config.customTex’]

Ich würde die Keys anders nennen z.b so page.header.CompraSW6TestconfigcustomTex ohne Punkte dann sollte das klappen

---

<div class="post-metadata">

**Author:** ![DenKon26](https://avatars.discourse-cdn.com/v4/letter/d/5e9695/32.png) [@DenKon26](https://forum.shopware.com/u/DenKon26)\
**Post date:** [7. Juni 2019 um 06:32 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/4 "2019-06-07T06:32:17Z")

</div>

> [@Rainware schrieb:](https://forum.shopware.com/profile/27955/Rainware "Rainware")
> 
> Die Keys sind das Problem bei dir&nbsp;
> 
> Denn du willst nicht:&nbsp;page.header.CompraSW6Test.config.customTex
> 
> sondern: page.header[‚CompraSW6Test.config.customTex‘]
> 
> Ich würde die Keys anders nennen z.b so page.header.CompraSW6TestconfigcustomTex ohne Punkte dann sollte das klappen
> 
> &nbsp;

Auch mit dem anderen Key-Zugriff funktioniert es nicht. Bisher konnte ich die Daten nur ausgeben lassen, wenn ich statt assign die Daten mit addExtension und einer Data + DataService Klasse bereitsgestellt habe

---

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [8. Juni 2019 um 09:41 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/5 "2019-06-08T09:41:19Z")

</div>

Wenn du deine Konstante änderst in:&nbsp;

```
const CONFIG_NAMESPACE = 'CompraSW6Test';

```

und den Aufruf im Template mit&nbsp;

```
{{ page.header.CompraSW6Test.customText }}

```

machst, dann sollte es gehen. Bei mir klappt es so.

Ich nehme an, dass die Konstante im String keinen Punkt enthalten darf, da dieser ja zum Navigieren im Array genutzt wird.&nbsp;

&nbsp;

//Edit: Ach quatsch. Du holst dir die config ja mit **getDomain()** und dann werden die bei dir immer mit **CONFIG\_NAMESPACE.config** assigned…&nbsp;  
Holt man sich jeden Wert einzeln und weist diese&nbsp;der View zu, kann man das unterbinden…

&nbsp;

---

<div class="post-metadata">

**Author:** ![Oliver\_Skroblin](https://avatars.discourse-cdn.com/v4/letter/o/6bbea6/32.png) [@Oliver\_Skroblin](https://forum.shopware.com/u/Oliver_Skroblin)\
**Post date:** [9. Juni 2019 um 05:54 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/6 "2019-06-09T05:54:52Z")

</div>

Hi,

um Daten in Shopware 6 zu erweitern könnt ihr das extension System benutzen. Jedes Objekt in Shopware 6 leitet von der Struct Klasse ab welches es ermöglicht über -\>addExtension($key, $struct) und -\>getExtension($key) weitere Daten an ein Objekt zuzuweisen.&nbsp;

---

<div class="post-metadata">

**Author:** ![robjke1](https://avatars.discourse-cdn.com/v4/letter/r/71c47a/32.png) [@robjke1](https://forum.shopware.com/u/robjke1)\
**Post date:** [23. Juni 2019 um 21:53 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/7 "2019-06-23T21:53:21Z")

</div>

[@Oliver Skroblin]([http://forum.shopware.com/profile/1871/Oliver](http://forum.shopware.com/profile/1871/Oliver) Skroblin „Oliver Skroblin“)‍&nbsp;

Gibt es einen speziellen Trick wie man über twig auf die extensions zugreift?

Habe dem Header mal eine extension hinzugefügt und diese wird auch im dump ausgegeben:

![](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/2X/e/e4417191f0b2ed5e47000655e35f6fdb362c524d.png)

&nbsp;

Und so versuche ich im template drauf zuzugreifen:

{{ page.header.extensions.my\_extension.data.pixel\_id }}

&nbsp;

funktioniert aber nicht

&nbsp;

//Edit: ohne „data“ gehts. also&nbsp;{{ page.header.extensions.my\_extension.pixel\_id }}

---

<div class="post-metadata">

**Author:** ![Patrick\_Stahl](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/patrick_stahl/32/7679_2.png) [@Patrick\_Stahl](https://forum.shopware.com/u/Patrick_Stahl)\
**Post date:** [24. Juni 2019 um 05:47 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/8 "2019-06-24T05:47:39Z")

</div>

Hey @robjke‍,

schau dir nochmal den Dump genauer an.  
**extensions** &nbsp;ist ein Array von Extensions, keine Überraschung. Aber jede Extension, so wie in diesem Fall&nbsp;_my\_extension_, ist jedoch ein&nbsp;[**ArrayEntity**](https://github.com/shopware/platform/blob/master/src/Core/Framework/Struct/ArrayEntity.php).

Da die ArrayEntity Klasse das&nbsp;_ArrayAccess_&nbsp;Interface implementiert, kannst du darauf zugreifen wie auf ein Array, und zwar so wie du es bereits getan hast: Ohne das „data“ dazwischen.  
Du könntest es aber auch weiterhin als eine Klasseninstanz benutzen und direkt&nbsp;_-\>get(‚pixel\_id‘) bzw.&nbsp;-\>offetGet(‚pixel\_id‘)_&nbsp;aufrufen.

Vielleicht hilft dir das weiter beim Verständnis.

Gruß,  
Patrick&nbsp; ![Shopware](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/shopware.png "Shopware")

---

<div class="post-metadata">

**Author:** ![robjke1](https://avatars.discourse-cdn.com/v4/letter/r/71c47a/32.png) [@robjke1](https://forum.shopware.com/u/robjke1)\
**Post date:** [24. Juni 2019 um 08:15 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/9 "2019-06-24T08:15:44Z")

</div>

[@Patrick Stahl]([http://forum.shopware.com/profile/1869/Patrick](http://forum.shopware.com/profile/1869/Patrick) Stahl “Patrick Stahl”)‍

Ok, das werde ich mal ausprobieren, danke.&nbsp;

Aber grundsätzlich sollte man als best practice immer mit addExtension arbeiten oder?!

---

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [26. Juni 2019 um 11:09 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/10 "2019-06-26T11:09:20Z")

</div>

Könnte es zu addExtension() vielleicht ein How To geben?

Mir ist das mit dem Struct noch nicht ganz klar und im Paypal-Plugin komme ich nicht ganz klar.  
Mit assign() ein Array an Konfigurationen zu assignen geht auch, aber wie würde man das mit addExtension() machen?

---

<div class="post-metadata">

**Author:** ![Patrick\_Stahl](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/patrick_stahl/32/7679_2.png) [@Patrick\_Stahl](https://forum.shopware.com/u/Patrick_Stahl)\
**Post date:** [26. Juni 2019 um 11:12 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/11 "2019-06-26T11:12:38Z")

</div>

Hallo @mdsw‍,

das gibt es [hier](https://docs.shopware.com/en/shopware-platform-dev-en/how-to/entity-extension). 🙂

Gruß,  
Patrick&nbsp; ![Shopware](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/86c57fbace799dd4eb1f1b8a2d3bdc1733f0aea1.png "Shopware")

---

<div class="post-metadata">

**Author:** ![robjke1](https://avatars.discourse-cdn.com/v4/letter/r/71c47a/32.png) [@robjke1](https://forum.shopware.com/u/robjke1)\
**Post date:** [26. Juni 2019 um 18:32 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/12 "2019-06-26T18:32:10Z")

</div>

In dem Beispiel ist der Struct aber nicht “dynamisch”, sondern der feste wert ‘foo’

Das ganze verwirrt mich irgendwie noch mehr.

Wie bekomme ich jetzt ganz konkret die Werte meiner Plugin-Konfiguration beispielsweise in das&nbsp;Struct bzw in die addExtension() rein.

Bitte für dummies und ohne einzelne Stichwörter.

&nbsp;

---

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [26. Juni 2019 um 19:24 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/13 "2019-06-26T19:24:38Z")

</div>

Bin auch gerade am herumprobieren. Hier vielleicht mal ein konkreteres Beispiel, was ich hier vor habe. In SW 5 ließ sich das mit einem einfachen assign eines arrays&nbsp;an die view lösen:

&nbsp;

Ich habe hier einen Subscriber, der lauscht auf das Event&nbsp; **StorefrontRenderEvent::NAME** , könnte aber beispielsweise auch auf das Event&nbsp; **HeaderPageletLoadedEvent::NAME** subscriben. In diesem Fall wollte ich mal Ersteren austesten.

```
config = $config;
	}

	public static function getSubscribedEvents(): array
	{
		return[
			StorefrontRenderEvent::NAME => 'onStorefrontRenderLoaded'
		];
	}

	public function onStorefrontRenderLoaded(StorefrontRenderEvent $event)
	{
		if (!$this->config->get('PluginName.config.active')) {
			return;
		}

		$pluginConfig = array
		(
			'foo' => $this->config->get('PluginName.config.foo'),
			'bar' => $this->config->get('PluginName.config.bar')
		);

		/**
		 * hier das ganze mal mit Struct
		 */
		$event->getSalesChannelContext()->addExtension(self::CONFIG_NAMESPACE, new MyCustomStruct());

		/**
		 * das hier geht auch ^^ ganz ohne Struct
		 */
		$event->setParameter(self::CONFIG_NAMESPACE, $pluginConfig);

	}
}

```

&nbsp;

Hier stehen einem nun verschiedene Möglichkeiten bereit, die Werte aus der Konfiguration an die Storefront zu übertragen. Dabei unterscheiden sich die Möglichkeiten je nach Event. Und das führt in der Storefront auch zu einer jeweils anderen Untergliederung. Überflüssig zu sagen, dass die Werte der Konfiguration je nach Event und Vorgehensweise mal direkt in erster Ebene des arrays ( siehe&nbsp;dump() im template&nbsp;), mal unter page.header, mal unter context… usw erreichbar sind… ich denke das ist klar… aber auch hier… wie sollen Plugins hier vorgehen?

&nbsp;

&nbsp;

&nbsp;

1. ganz ohne Struct und mit **setParameter** bei dem Event&nbsp; **StorefrontRenderEvent::NAME**

$event-\>setParameter(self::CONFIG\_NAMESPACE, $pluginConfig);

&nbsp;

1. mit Struct und mit **setParameter** bei dem Event&nbsp; **StorefrontRenderEvent::NAME**

&nbsp;

3.&nbsp;ohne Struct und mit **assign** bei dem Event&nbsp; **HeaderPageletLoadedEvent::NAME**

$event-\>getPagelet()-\>assign([self::CONFIG\_NAMESPACE =\> $pluginConfig]);

&nbsp;

1. mit Struct und getSalesChannelContext bei den Events&nbsp; **StorefrontRenderEvent::NAME** oder&nbsp; **HeaderPageletLoadedEvent::NAME**

$event-\>getSalesChannelContext()-\>addExtension(self::CONFIG\_NAMESPACE, new MyCustomStruct());

&nbsp;

&nbsp;

&nbsp;

**FRAGE 1:** Wo schmeißt man - auf gut deutsch gesagt - seine Konfiguration am besten hin? setParameter ermöglicht einem den Zugriff auf seine Variablen und Werte direkt über {{ PluginName.foo }} während andere Lösungen einem die Variablen zum Beispiel über {{ page.header.PluginName.foo }} ermöglicht.

**FRAGE 2:** Wenn nun der Weg über ein Struct der saubere und gewollte Weg ist, was muss ich dann im Struct machen? Muss ich hier die Konfiguration mittels SystemConfigService auslesen und dann über den Struct irgendwie bereitstellen?

&nbsp;

Sowas in der Richtung? Klar… funktioniert nicht, aber vielleicht anhand dieses Beispiels mal aufklären…

```
config = $config;
	}

	public function getConfig()
	{
		return array(
		'foo' => $this->config->get('PluginName.config.foo'),
		'bar' => $this->config->get('PluginName.config.bar'),
		);
	}
}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![mdsw](https://avatars.discourse-cdn.com/v4/letter/m/94ad74/32.png) [@mdsw](https://forum.shopware.com/u/mdsw)\
**Post date:** [1. Juli 2019 um 11:56 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/14 "2019-07-01T11:56:48Z")

</div>

Weiß hier irgendjemand schon näheres?

[@Patrick Stahl]([http://forum.shopware.com/profile/1869/Patrick](http://forum.shopware.com/profile/1869/Patrick) Stahl “Patrick Stahl”)‍ Ich denke, dass das hier ein zentrales Thema für viele Plugin-Entwickler ist. Sieht man ja auch an den Views dieses Themas. Magst Du hier vielleicht Licht ins Dunkel bringen? Nicht jeder Designer ist ein Symfony-PHP-Crack ![Undecided](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/8ae622c50104e84c5003fedfcc22572813a67b41.png "Undecided")

---

<div class="post-metadata">

**Author:** ![robjke1](https://avatars.discourse-cdn.com/v4/letter/r/71c47a/32.png) [@robjke1](https://forum.shopware.com/u/robjke1)\
**Post date:** [3. Juli 2019 um 10:48 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/15 "2019-07-03T10:48:07Z")

</div>

\*push\*

---

<div class="post-metadata">

**Author:** ![salty\_rocks](https://avatars.discourse-cdn.com/v4/letter/s/8e8cbc/32.png) [@salty\_rocks](https://forum.shopware.com/u/salty_rocks)\
**Post date:** [4. Juli 2019 um 14:41 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/16 "2019-07-04T14:41:35Z")

</div>

> [@robjke schrieb:](https://forum.shopware.com/profile/4680/robjke "robjke")
> 
> In dem Beispiel ist der Struct aber nicht „dynamisch“, sondern der feste wert ‚foo‘
> 
> Das ganze verwirrt mich irgendwie noch mehr.
> 
> Wie bekomme ich jetzt ganz konkret die Werte meiner Plugin-Konfiguration beispielsweise in das&nbsp;Struct bzw in die addExtension() rein.
> 
> Bitte für dummies und ohne einzelne Stichwörter.

Vielleicht hilft dir dieses Beispiel (use cases und namespace lasse ich mal außen vor). Da die Konfiguration aktuell noch keine Default-Values unterstützt, habe einen entsprechenden Rework in der Struct implementiert. Außerdem fiel mir gerade noch auf, dass der Methodenname „setValues“ etwas unglücklich gewählt ist.

**Struct**

```
setValues($pluginConfig, 'alwaysVisible', false);
        $this->setValues($pluginConfig, 'position', 'br');
        $this->setValues($pluginConfig, 'colorBorder', '#617183');
        $this->setValues($pluginConfig, 'colorBackground', '#d9400b');
        $this->setValues($pluginConfig, 'colorText', '#ffffff');
        $this->setValues($pluginConfig, 'transparency', '1.0');
        $this->setValues($pluginConfig, 'STPdistanceX', 15);
        $this->setValues($pluginConfig, 'STPdistanceY', 15);
        $this->setValues($pluginConfig, 'padding', 15);
        $this->setValues($pluginConfig, 'fontSize', 14);
    }

    /**
     * @return mixed
     */
    public function getConfig() : array
    {
        return $this->config;
    }

    /**
     * @param array $config
     */
    public function setConfig(array $config): void
    {
        $this->config = $config;
    }

    /**
     * @param array $pluginConfig
     * @param string $key
     * @param null $default
     */
    public function setValues(array $pluginConfig, string $key, $default = null): void
    {
        if(array_key_exists($this->configPath . $key, $pluginConfig)) {
            $this->config[$key] = $pluginConfig[$this->configPath . $key];
        }
        else {
            $this->config[$key] = $default;
        }
    }
}

```

**Der Subscriber**

```
class Storefront implements EventSubscriberInterface
{
    /**
     * @var SystemConfigService
     */
    private $systemConfigService;

    /**
     * Storefront constructor.
     * @param SystemConfigService $systemConfigService
     */
    public function __construct(SystemConfigService $systemConfigService)
    {
        $this->systemConfigService = $systemConfigService;
    }

    /**
     * @return array
     */
    public static function getSubscribedEvents(): array
    {
        return [
            FooterPageletLoadedEvent::NAME => 'onFooterLoaded'
        ];
    }

    /**
     * @param FooterPageletLoadedEvent $event
     * @throws InvalidDomainException
     */
    public function onFooterLoaded(FooterPageletLoadedEvent $event) :void
    {
        $config = $this->systemConfigService->getDomain('saltySw6ScrollToTop.config', $event->getSalesChannelContext()->getSalesChannel()->getId(), true );
        $configValues = new StorefrontPageData($config);

        $event->getPagelet()->addExtension('saltySw6ScrollToTop', $configValues);
    }

```

&nbsp;

**das jeweilige Template**

```
{{ page.footer.extensions["saltySw6ScrollToTop"].config["padding"] }}

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![robjke1](https://avatars.discourse-cdn.com/v4/letter/r/71c47a/32.png) [@robjke1](https://forum.shopware.com/u/robjke1)\
**Post date:** [4. Juli 2019 um 14:59 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/17 "2019-07-04T14:59:32Z")

</div>

Danke für den Input, das sieht schon mal sehr gut aus.&nbsp;

---

<div class="post-metadata">

**Author:** ![flix](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/flix/32/13441_2.png) [@flix](https://forum.shopware.com/u/flix)\
**Post date:** [29. September 2019 um 20:36 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/18 "2019-09-29T20:36:04Z")

</div>

> [@DenKon26 schrieb:](https://forum.shopware.com/profile/21548/DenKon26 "DenKon26")
> 
> > [@Rainware schrieb:](https://forum.shopware.com/profile/27955/Rainware "Rainware")
> > 
> > Die Keys sind das Problem bei dir&nbsp;
> > 
> > Denn du willst nicht:&nbsp;page.header.CompraSW6Test.config.customTex
> > 
> > sondern: page.header[‚CompraSW6Test.config.customTex‘]
> > 
> > Ich würde die Keys anders nennen z.b so page.header.CompraSW6TestconfigcustomTex ohne Punkte dann sollte das klappen
> > 
> > &nbsp;
> 
> Auch mit dem anderen Key-Zugriff funktioniert es nicht. Bisher konnte ich die Daten nur ausgeben lassen, wenn ich statt assign die Daten mit addExtension und einer Data + DataService Klasse bereitsgestellt habe

Spricht etwas dagegen, sich die Daten über:&nbsp;&nbsp;{{ shopware.config.CompraSW6Test.config.customTex }} ausgeben zu lassen?

---

<div class="post-metadata">

**Author:** ![Michael\_Telgmann](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/michael_telgmann/32/20289_2.png) [@Michael\_Telgmann](https://forum.shopware.com/u/Michael_Telgmann)\
**Post date:** [30. September 2019 um 08:09 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/19 "2019-09-30T08:09:34Z")

</div>

Hallo flix,

nein, ganz im Gegenteil.  
Grundsätzlich steht die ganze Config überall im Template unter “shopware.config” zur Verfügung. Man muss sich also als Plugin nicht selber darum kümmern, dass die Plugin Config im Template verfügbar ist.&nbsp;

Viele Grüße aus Schöppingen

![cool](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/86c57fbace799dd4eb1f1b8a2d3bdc1733f0aea1.png "cool")&nbsp;Michael Telgmann

---

<div class="post-metadata">

**Author:** ![L\_S](https://avatars.discourse-cdn.com/v4/letter/l/e79b87/32.png) [@L\_S](https://forum.shopware.com/u/L_S)\
**Post date:** [31. Mai 2021 um 10:10 UTC](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902/20 "2021-05-31T10:10:24Z")

</div>

Hallo, für mich ist da alles auch noch nicht so klar  
ich hab ein Array mit einer Liste die ich anzeigen möchte

in meinem Subscriber verwende ich das addExtension mit dem ArrayStruct

in twig kann ich dann aber nicht mit einem for loop darüber loopen  
ich kann die Elemente aber mit dem normalen indexen abrufen [0] [1]  
der length filter sagt mir dass das array nur 1 Element hat was falsch ist.

Ich verwende jetzt das Assign, da ich dadurch einfach nur das Array bekomme.

Beste Grüße Lukas

Wie kann ich addExtension verwenden und dann loopen ?

Und warum zeigt mir das dump bei dem Struct ein data field, auf das ma nicht zugreifen kann bzw null ist ?  
Warum braucht man das Struct überhaupt  
Wäre nice wenns da auch in der Doku ne Erklärung gebe 🙂 (Oder Kommentare im Code :D)

[Nächste Seite](https://forum.shopware.com/t/header-pagelet-assign-variable-ausgeben/59902.md?page=2)
