# Auswahl der Kundengruppe über ein Selectfeld - greift nicht auf Startseite

**URL:** <https://forum.shopware.com/t/auswahl-der-kundengruppe-uber-ein-selectfeld-greift-nicht-auf-startseite/58203>\
**Category:** Programmierung\
**Created:** [22. Februar 2019 um 12:43 UTC](https://forum.shopware.com/t/auswahl-der-kundengruppe-uber-ein-selectfeld-greift-nicht-auf-startseite/58203 "2019-02-22T12:43:53Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Monsieur\_Olexesh](https://avatars.discourse-cdn.com/v4/letter/m/e95f7d/32.png) [@Monsieur\_Olexesh](https://forum.shopware.com/u/Monsieur_Olexesh)\
**Post date:** [22. Februar 2019 um 12:43 UTC](https://forum.shopware.com/t/auswahl-der-kundengruppe-uber-ein-selectfeld-greift-nicht-auf-startseite/58203/1 "2019-02-22T12:43:53Z")

</div>

Ich möchte, dass der Kunde, sofern nicht eingeloggt, über ein Dropdown Select auswählen kann, ob er Shopkunden oder Händlerpreise angezeigt bekommt.

Dazu will ich ein eigenes Plugin schreiben. Die Funktion " **getSubscribedEvents**" sieht wie Folgt aus:

‘Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend’ =\> ‘onPostDispatch’,  
&nbsp;‘Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Index’ =\> ‘onPostDispatch’,  
&nbsp;‘Enlight\_Controller\_Action\_PostDispatchSecure\_Frontend\_Listing’ =\> ‘onPostDispatch’,  
‘Enlight\_Controller\_Action\_PostDispatchSecure\_Widgets’ =\> ‘onPostDispatch’,  
&nbsp;‘Enlight\_Controller\_Action\_PreDispatch\_Widgets\_Listing’ =\> ‘onPostDispatch’,

&nbsp;

Der Callback " **onPostDispatch**":&nbsp;

&nbsp;&nbsp; &nbsp;public function **onPostDispatch** (\Enlight\_Event\_EventArgs $args){  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$controller = $args-\>getSubject();  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$request = $controller-\>Request();  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$response = $controller-\>Response();  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$view = $controller-\>View();  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$showSwitcher = 0;  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$customerGroupSelected = 0;  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$loggedIn = Shopware()-\>Modules()-\>Admin()-\>sCheckUser();  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;if($loggedIn){  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;return;  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}  
&nbsp;  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$showSwitcher = 1;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$k = Shopware()-\>Session()-\>sUserGroup;  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$view-\>assign(‘showSwitcher’, $showSwitcher);  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$view-\>assign(‘userGroup’, $k);

&nbsp;&nbsp; &nbsp;}

&nbsp;

In der topbar-navigation.tpl binde ich den&nbsp; Select ein, der die setCustomergroup-Action meines Plugin-Controllers “Switcher” aufruft.

**topbar-navigation.tpl:**

```
{block name="frontend_index_top_bar_nav"}
{if $showSwitcher == 1}

 Preise werden angezeigt für: 
 

                                        
                                                
                                                        Privatkunden
                                                
                                                 
                                                        Öffentliche Einrichtungen
                                                
                                        

{/if}
{$smarty.block.parent}
{/block}

```

&nbsp;

Diese Funktion sieht wie Folgt aus: **/Widgets/Switcher.php**

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp; function **setCustomergroupAction()**{  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$cookie\_name = “customerGroupSet”;  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$kundengruppe = $this-\>Request()-\>getPost(‘customerGroup’);  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;//$postVariables = $this-\>Request()-\>getPost();  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;Shopware( &nbsp;)-\>Session( &nbsp;)-\>sUserGroup = $kundengruppe;  
&nbsp;&nbsp; &nbsp;  
&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;$this-\>redirect();

&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;}

&nbsp;

Den Redirect auf die Startseite lasse erfolgen, da die ControllerAction keine TPL Datei zugeordnet bekommt.

Das funktioniert auch schon FAST.

Jedoch scheint die Zuweisung der Kundengruppe über Shopware()-\>Session()-\>sUserGroup auf der Startseite, auf die man weitergeleitet wird, nicht zu greifen.

Wähle ich “Öffentliche Einrichtungen” aus, so wid auf der Startseite dennoch im Select angezeigt, dass ich als Privatkunde unterwegs sei. Auf allen anderen Seite, wird die Session Variable aber korrekt gesetzt.

Hat hier vielleicht jemand eine Idee, wie dieses Verhalten zustande kommt?

Merci 🙂

&nbsp;

&nbsp;

---

<div class="post-metadata">

**Author:** ![sonic](https://dub1.discourse-cdn.com/flex013/user_avatar/forum.shopware.com/sonic/32/25728_2.png) [@sonic](https://forum.shopware.com/u/sonic)\
**Post date:** [22. Februar 2019 um 12:54 UTC](https://forum.shopware.com/t/auswahl-der-kundengruppe-uber-ein-selectfeld-greift-nicht-auf-startseite/58203/2 "2019-02-22T12:54:20Z")

</div>

Es geht schon (bin gerade selber an so ein Plugin dran).  
Das Problem: der HTTP-Cache!  
Der unterscheidet nämlich an den Stellen nicht,&nbsp; ob die Kundengruppe abweichend ist - das geht über ein Cookie.  
Dieses müsstest Du auch noch abhängig der Kundengruppe erweitern - z.B. auf dem [Event&nbsp;Shopware\_Plugins\_HttpCache\_ContextCookieValue](https://github.com/shopwareLabs/SwagUserPrice/blob/master/Subscriber/CacheKeyExtender.php#L43)  
Die nächste Stolperfalle lauert dann bereits auf Dich, wenn der Kunde mehr als ein Tab auf hat.

Ohne „Cookie“-Salzen hatte ich so Effekte wie: Preis war Teilweise Kundengruppe 2, und Artikelslider noch aus Cache Kundengruppe 1

Ich würde mich&nbsp; auch nicht darauf verlassen, dass bei Dir wirklich die zweite Seite richtig ist, diese wird dann wahrscheinlich für alle anderen User falsche Werte anzeigen.  
Es wird das angezeigt, was zuerst im Cache landet. Auf Seite eins eben der „Privatkunde“, auf Seite 2 dann der „Händler“&nbsp; ![Wink](https://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/wink.png "Wink")

Ist nicht so trivial, wie Du meinst.  
Generell habe ich mich auf keine post/pre-Dispatch gesetzt, sondern einen eigenen Controller und biege in dem dann die Kundengruppe in der Session um.

&nbsp;

---

<div class="post-metadata">

**Author:** ![Monsieur\_Olexesh](https://avatars.discourse-cdn.com/v4/letter/m/e95f7d/32.png) [@Monsieur\_Olexesh](https://forum.shopware.com/u/Monsieur_Olexesh)\
**Post date:** [22. Februar 2019 um 13:46 UTC](https://forum.shopware.com/t/auswahl-der-kundengruppe-uber-ein-selectfeld-greift-nicht-auf-startseite/58203/3 "2019-02-22T13:46:17Z")

</div>

Ich bin noch ziemlich neu was Shopware Programmierung angeht.

Das heißt, dann dass ich über die Session wahrscheinlich nicht zuverlässig erreichen kann, was ich bewerkstelligen will?

Magst du mir vielleicht etwas genauer erklären was mit den folgenden Sätzen gemeint ist?

-Ohne “Cookie”-Salzen hatte ich so Effekte wie: Preis war Teilweise Kundengruppe 2, und Artikelslider noch aus Cache Kundengruppe 1

&nbsp;

- Generell habe ich mich auf keine post/pre-Dispatch gesetzt, sondern einen eigenen Controller und biege in dem dann die Kundengruppe in der Session um.

–\>Ich setze doch auch über die Controller Action meines Plugin Controllers wie Kundengruppe in der Session. Oder meinst du hier was anderes?

&nbsp;

Danke dir, für die Antwort :)&nbsp;

&nbsp;
