# Auf Variable zugreifen/ändern

**URL:** <https://forum.shopware.com/t/auf-variable-zugreifen-andern/48634>\
**Category:** Programmierung\
**Created:** [4. Oktober 2017 um 13:30 UTC](https://forum.shopware.com/t/auf-variable-zugreifen-andern/48634 "2017-10-04T13:30:20Z")\
**Posts on this page:** 11\
**Page:** 1

<div class="post-metadata">

**Author:** ![APEM](https://avatars.discourse-cdn.com/v4/letter/a/4491bb/32.png) [@APEM](https://forum.shopware.com/u/APEM)\
**Post date:** [4. Oktober 2017 um 13:30 UTC](https://forum.shopware.com/t/auf-variable-zugreifen-andern/48634/1 "2017-10-04T13:30:20Z")

</div>

Hallo,

ich möchte volles Haar, ein Topf mit Gold und über ein Plugin eine Variable überschreiben.

_Enlight\_Controller\_Action\_PreDispatchSecure\_Frontend\_Detail_

_$controller-\>View()-\>assign(‘articleName’, ‘DAS IST EIN TEXT’);_

print\_r gibt mir den geänderten Artikelnamen, aber im Template bleibt alles gleich.  
Kann im Forum nichts hilfreiches finden oder suche nach den falschen Keywords.

&nbsp;

---

<div class="post-metadata">

**Author:** ![arnebecker](https://avatars.discourse-cdn.com/v4/letter/a/3bc359/32.png) [@arnebecker](https://forum.shopware.com/u/arnebecker)\
**Post date:** [4. Oktober 2017 um 14:45 UTC](https://forum.shopware.com/t/auf-variable-zugreifen-andern/48634/2 "2017-10-04T14:45:16Z")

</div>

Dieses Event gibt es auch gar nicht:&nbsp;\_PreDispatchSecure. Versuchs mal mit Post\_DispatchSecure

Der halbe Topf Gold geht dann wohl an mich 😉

---

<div class="post-metadata">

**Author:** ![APEM](https://avatars.discourse-cdn.com/v4/letter/a/4491bb/32.png) [@APEM](https://forum.shopware.com/u/APEM)\
**Post date:** [5. Oktober 2017 um 05:53 UTC](https://forum.shopware.com/t/auf-variable-zugreifen-andern/48634/3 "2017-10-05T05:53:12Z")

</div>

```
        $this->subscribeEvent(
            'Enlight_Controller_Action_PostDispatchSecure_Frontend',
            'machgold'
        );

    public function machgold(Enlight_Event_EventArgs $arguments)
    {

        $controller = $arguments->getSubject();
        
        $request = $controller->Request();
        
        $response = $controller->Response();
        
        $view = $controller->View();

        $sArticle = $view->getAssign('sArticle');
        
        $sArticle['articleName'] ='geänderter Titel....';
        
        $view->assign('articleName', $sArticle['articleName'] );
    }

```

Würd dir auch den ganzen Topf überlassen, nur leider passiert auch mit PreDispatchSecure nicht das, was ich erwarte…  
Was mache ich falsch?

---

<div class="post-metadata">

**Author:** ![APEM](https://avatars.discourse-cdn.com/v4/letter/a/4491bb/32.png) [@APEM](https://forum.shopware.com/u/APEM)\
**Post date:** [5. Oktober 2017 um 05:56 UTC](https://forum.shopware.com/t/auf-variable-zugreifen-andern/48634/4 "2017-10-05T05:56:26Z")

</div>

Habe auch schon ein eigenes Template geladen und versucht mit den Variablen zu füllen, leider auch nichts.  
Stell ich mir das Ganze zu einfach vor?

---

<div class="post-metadata">

**Author:** ![Creatixx](https://avatars.discourse-cdn.com/v4/letter/c/c67d28/32.png) [@Creatixx](https://forum.shopware.com/u/Creatixx)\
**Post date:** [5. Oktober 2017 um 06:12 UTC](https://forum.shopware.com/t/auf-variable-zugreifen-andern/48634/5 "2017-10-05T06:12:19Z")

</div>

> [@APEM schrieb:](https://forum.shopware.com/profile/27278/APEM "APEM")
> 
> $this-\>subscribeEvent(  
> ‚Enlight\_Controller\_Action\_PreDispatchSecure\_Frontend‘,  
> ‚machgold‘  
> );
> 
> public function machgold(Enlight\_Event\_EventArgs $arguments)  
> {
> 
> $controller = $arguments-\>getSubject();
> 
> $request = $controller-\>Request();
> 
> $response = $controller-\>Response();
> 
> $view = $controller-\>View();
> 
> $sArticle = $view-\>getAssign(‚sArticle‘);
> 
> $sArticle[‚articleName‘] =‚geänderter Titel…‘;
> 
> $view-\>assign(‚articleName‘, $sArticle[‚articleName‘] );  
> }
> 
> Würd dir auch den ganzen Topf überlassen, nur leider passiert auch mit PreDispatchSecure nicht das, was ich erwarte…  
> Was mache ich falsch?

@arnebecker sagte ja auch **Post** Dispatch und nicht **Pre** Dispatch&nbsp;

&nbsp;

Gruß

---

<div class="post-metadata">

**Author:** ![APEM](https://avatars.discourse-cdn.com/v4/letter/a/4491bb/32.png) [@APEM](https://forum.shopware.com/u/APEM)\
**Post date:** [5. Oktober 2017 um 06:20 UTC](https://forum.shopware.com/t/auf-variable-zugreifen-andern/48634/6 "2017-10-05T06:20:23Z")

</div>

Japp, war nur hier noch die alte copy/paste version. Funktioniert auch nicht mit **Post** Dispatch.

---

<div class="post-metadata">

**Author:** ![APEM](https://avatars.discourse-cdn.com/v4/letter/a/4491bb/32.png) [@APEM](https://forum.shopware.com/u/APEM)\
**Post date:** [5. Oktober 2017 um 08:15 UTC](https://forum.shopware.com/t/auf-variable-zugreifen-andern/48634/7 "2017-10-05T08:15:36Z")

</div>

Ok, nachdem ich das Plugin deinstalliert/installiert und den cache gelöscht habe,  
funktioniert es (mit PostDispatch) halbwegs.

Bräuchte noch ein paar Schubser in die richtige Richtung:

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $view-\>assign(‘myvar’,‘FOOBAR’);

setzt mir in dem extendeten template die variable korrekt.  
Wenn ich aber versuche nur den Artikelnamen zu überschreiben

&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $sArticle[‘articleName’] = ‘FOO’;  
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $view-\>assign(‘sArticle’, $sArticle[‘articleName’]);

wird im extendeten template der Name mit FOO zwar ausgegeben, aber alle anderen vars aus $sArticle gehen verloren.  
Frage: Wie ersetze ich aus dem $sArticles-array zB nur den Namen?

---

<div class="post-metadata">

**Author:** ![arnebecker](https://avatars.discourse-cdn.com/v4/letter/a/3bc359/32.png) [@arnebecker](https://forum.shopware.com/u/arnebecker)\
**Post date:** [5. Oktober 2017 um 08:23 UTC](https://forum.shopware.com/t/auf-variable-zugreifen-andern/48634/8 "2017-10-05T08:23:15Z")

</div>

Aktuell wird dein Event bei jedem Controller und jeder Action gefeuert. Auch dort wo es keine Artikeldaten gibt. Versuch mal&nbsp;Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Detail und prüfe dann ob du auch in der richtigen Action (index wenn du die ADS meinst) bist. Wenn du den Artikelnamen überschreiben willst, musst du ihn auch in die richtige Variable zurückspeichern. Oder eben die geänderte Variable im Template ausgeben.

So z.b.

```
$view->assign('sArticle', $sArticle);

```

Ansonsten musst du das Plugin bei Verwendung eines anderen Events neu installieren. Und da Artikelseiten gecached werden, diesen auch leeren oder deaktivieren.

---

<div class="post-metadata">

**Author:** ![APEM](https://avatars.discourse-cdn.com/v4/letter/a/4491bb/32.png) [@APEM](https://forum.shopware.com/u/APEM)\
**Post date:** [5. Oktober 2017 um 08:49 UTC](https://forum.shopware.com/t/auf-variable-zugreifen-andern/48634/9 "2017-10-05T08:49:39Z")

</div>

Hallo Arne, also mit

```
Enlight_Controller_Action_PostDispatchSecure_Frontend_Detail

```

und

```
    public function onPostDispatchDetail(Enlight_Event_EventArgs $arguments) {
        
        $controller = $arguments->getSubject();

        $view = $controller->View();

        $sArticle['articleName'] ='TESTING';  

        $view->assign('sArticle', $sArticle);

    }

```

wird alles ausser dem Namen überschrieben bzw bleibt leer. ![Foot-in-Mouth](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/bedbc37f276faa6d086ddea9cd70cb0550bbd56e.png "Foot-in-Mouth")

---

<div class="post-metadata">

**Author:** ![arnebecker](https://avatars.discourse-cdn.com/v4/letter/a/3bc359/32.png) [@arnebecker](https://forum.shopware.com/u/arnebecker)\
**Post date:** [5. Oktober 2017 um 09:02 UTC](https://forum.shopware.com/t/auf-variable-zugreifen-andern/48634/10 "2017-10-05T09:02:02Z")

</div>

Naja&nbsp;$sArticle = $view-\>getAssign(‚sArticle‘); musst du auch machen vorher! 😉

---

<div class="post-metadata">

**Author:** ![APEM](https://avatars.discourse-cdn.com/v4/letter/a/4491bb/32.png) [@APEM](https://forum.shopware.com/u/APEM)\
**Post date:** [5. Oktober 2017 um 09:08 UTC](https://forum.shopware.com/t/auf-variable-zugreifen-andern/48634/11 "2017-10-05T09:08:07Z")

</div>

WOHHAAA… Super, hat geklappt. Aller besten Dank! Gold ist deins!
