# Plugin Remotecombo mit Attributen nicht mehr möglich! - CSRFWhitelistAware  (SW 5.2)

**URL:** <https://forum.shopware.com/t/plugin-remotecombo-mit-attributen-nicht-mehr-moglich-csrfwhitelistaware-sw-5-2/37649>\
**Category:** Programmierung\
**Created:** [23. Juni 2016 um 08:29 UTC](https://forum.shopware.com/t/plugin-remotecombo-mit-attributen-nicht-mehr-moglich-csrfwhitelistaware-sw-5-2/37649 "2016-06-23T08:29:10Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)\
**Post date:** [23. Juni 2016 um 08:29 UTC](https://forum.shopware.com/t/plugin-remotecombo-mit-attributen-nicht-mehr-moglich-csrfwhitelistaware-sw-5-2/37649/1 "2016-06-23T08:29:10Z")

</div>

Hallo!

Ich habe gerade mit erschrecken festgestellt, dass per Plugin Remotecombos der Abruf von Attributen nicht klappt.  
Mein Aufruf sah bisher immer so aus:

```
$form->setElement(
            'combo',
            'FooKey',
            array(
                'label' => 'Foo Label',
                'value' => "",
                'valueField' => 'id',
                'displayField' => 'name',
                'triggerAction' => 'all',
                'store' => 'new Ext.data.Store({
                    fields: [
                       "id",
                       "name"
                        ],
                       proxy : {
                         type : "ajax",
                         autoLoad : true,
                         api : {
                             read: document.location.pathname + \'Config/getList?_repositoryClass=attribute\',
                         },
                         reader : {
                         type : "json",
                         root : "data"
                         }
                    }
                    })',
                'required' => false,
                'scope' => Shopware\Models\Config\Element::SCOPE_SHOP
            )
        );

```

&nbsp;

Die read Angabe wurde mal von Shopware hier im Forum empfohlen, weil der url controller in gewissen Umständen die URL cached.  
Die Comboboxen bleiben leer, wenn ich die Backend URL selbst Aufrufe erhalte ich:

_"Ups! Ein Fehler ist aufgetreten!_

_Die nachfolgenden Hinweise sollten Ihnen weiterhelfen._

_The provided CSRF-Token is invalid. If you’re sure that the request should be valid, the called controller action needs to be whitelisted using the CSRFWhitelistAware interface. in engine/Shopware/Components/CSRFTokenValidator.php on line 108"_

Was ist also zu tun? Ich benötige unbedingt Hilfe!

**Nachtrag**

Leider ging an mir die CSRFT Implementierung vorbei.  
Habe mich an den Guide unter&nbsp;[https://developers.shopware.com/developers-guide/csrf-protection/](https://developers.shopware.com/developers-guide/csrf-protection/)&nbsp;gehalten (1:1), komme aber weiterhin nicht zum Erfolg.  
Die Remotecombo bleibt leer. Da es ja unendliche viele Plugins gibt, die das gleiche machen werden (Kundengruppen/Freifelder abfragen) muss es da ja eine Lösung für geben …&nbsp; ![Undecided](https://europe1.discourse-cdn.com/flex013/uploads/shopware/original/1X/8ae622c50104e84c5003fedfcc22572813a67b41.png "Undecided")

Schöne Grüße,  
Niklas

Schöne Grüße,  
Niklas

---

<div class="post-metadata">

**Author:** ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)\
**Post date:** [23. Juni 2016 um 09:56 UTC](https://forum.shopware.com/t/plugin-remotecombo-mit-attributen-nicht-mehr-moglich-csrfwhitelistaware-sw-5-2/37649/2 "2016-06-23T09:56:42Z")

</div>

Um das nochmal zusammenzufassen, was ich gemacht habe, aber nicht funktioniert.

- für den Support für SW \< 5.2 „CSRFWhitelistAware.php“ in „Components“ angelegt:

- in der Plugin-Bootstrap diese einbinden

- CSRFWhitelistAware per use Anweisung einbinden

- Interface in der Bootstrap verwenden

&nbsp;

- die Interface Methode getWhitelistedCSRFActions() implementieren (ich habe einfach mal ganz blöd alle Konstellationen probiert, nur um sicher zu gehen)

- der Rest ist Standard Plugin Prozedere, hier die Remotecombo

Das alles lässt sich installieren, die Combo bleibt aber leer.  
Meiner Meinung nach habe ich das so wie in der Doku gemacht.  
Trotzdem bleibt die Remotecombo leer, da offensichtlich das HTTP GET nicht funktioniert.

Kann es sein, dass diese ganze CSRF Doku sich nur auf eigene Methoden beziehen, und gar nicht auf Methoden von anderen Backend Controllern?  
Wenn ich mir die isWhitelisted() im CSRFTokenValidator angucke, werden ja nur eigene Methoden geprüft.

Habe einen Verweis zu diesem Beitrag ebenfalls im jira angelegt:&nbsp;[https://issues.shopware.com/#/issues/SW-15458](https://issues.shopware.com/#/issues/SW-15458)

**Nachtrag 1**

Es wird immer schöner … ich glaube, das Whitelisten funktioniert, das Problem liegt wohl eher darin, dass&nbsp;Config/getList?\_repositoryClass=attribute gar keine Ergebnisse liefert, da die Methode nicht mehr in 5.2 existiert. Das wurde natürlich nicht in der UPGRADE.md genannt …&nbsp; ![Foot-in-Mouth](http://forum.shopware.com/plugins/CKEditor/plugins/smiley/images/foot-in-mouth.png "Foot-in-Mouth")&nbsp;Was ist denn jetzt die alternative um Attribute abzufrufen? Super ärgerlich, da nun offensichtlich extra für 5.2 die URL Abfragen in den Forms angepasst werden müssen. Was dann wieder bedeutet, dass man alle Kunden mit Plugins auf den 5.2 Wechsel die Plugins neu installieren lassen muss … das ist doch blöd

**Nachtrag 2**

Ich kämpfe mich weiter durch und dokumentiere mal mit. Ich versuche nun herauszufinden, wie Artikel Freitextfelder per Backend Methide zurück kommen können. Der neue Menübereich für die Attribute verwendet …/backend/AttributeData/list?..

Nicht nur, dass egal wie ich die URL mit Parametern änder das nichts an der Selektion macht - ich verstehe auch nicht, welcher Controller wirklich verwendet wird. Einen Backend Controller AttributeData existiert jedenfalls nicht. Ich suche einfach einen Weg, wie per Remotecombo eine Liste mit aktiven und verfügbaren Artikel Freitextfeldern zurück kommt. Das funktionierte jetzt seit über 2 Jahren so wie oben beschrieben ohne Problem …

Bitte um dringende Hilfe!  
Niklas

---

<div class="post-metadata">

**Author:** ![Jan\_Bucker](https://avatars.discourse-cdn.com/v4/letter/j/db5fbb/32.png) [@Jan\_Bucker](https://forum.shopware.com/u/Jan_Bucker)\
**Post date:** [23. Juni 2016 um 13:23 UTC](https://forum.shopware.com/t/plugin-remotecombo-mit-attributen-nicht-mehr-moglich-csrfwhitelistaware-sw-5-2/37649/3 "2016-06-23T13:23:28Z")

</div>

Hi Niklas,

wenn ich das richtig verstehe, möchtest du die vefügbaren Attributefelder in einer Combobox auswählbar machen. Da nun alles von dem Attributmanagement verwaltet wird, läuft der Aufruf etwas anders. In deinem zweiten Nachtrag hast du eigentlich schon die Lösung genannt - und zwar attributeData/list zu verwenden.

Folgendes Beispiel als read Parameter&nbsp;funktioniert bei mir:

```
read: document.location.pathname + 'attributeData/list?table=s_articles_attributes'

```

Zusätzlich musst du darauf achten, dass sich die Keys in der Rückgabe geändert haben, somit wird „name“ zu „columnName“.

LG, Jan

---

<div class="post-metadata">

**Author:** ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)\
**Post date:** [23. Juni 2016 um 13:36 UTC](https://forum.shopware.com/t/plugin-remotecombo-mit-attributen-nicht-mehr-moglich-csrfwhitelistaware-sw-5-2/37649/4 "2016-06-23T13:36:09Z")

</div>

Hallo Jan!

Danke für das schnelle Feedback.

Das ist ja schon einmal was, ein großer Unterschied ist nur jedoch zur alten Funktion, dass bei der neuen alle Artikel Freitextfelder zurück kommen und nicht nur die “aktiven”.  
Da ich nicht finde, wo der attributeData Controller ist, weiß ich nicht, wie ich nur aktive selektiere könnte.  
Das wäre wohl die Eigenschaft “configured” im jeweiligen Freitextfeld - hast Du da noch eine Idee?

Schöne Grüße,  
Niklas

---

<div class="post-metadata">

**Author:** ![Jan\_Bucker](https://avatars.discourse-cdn.com/v4/letter/j/db5fbb/32.png) [@Jan\_Bucker](https://forum.shopware.com/u/Jan_Bucker)\
**Post date:** [23. Juni 2016 um 13:55 UTC](https://forum.shopware.com/t/plugin-remotecombo-mit-attributen-nicht-mehr-moglich-csrfwhitelistaware-sw-5-2/37649/5 "2016-06-23T13:55:06Z")

</div>

Hi Niklas,

vorab - der Controller liegt im AttributeBundle in engine/Shopware/AttributeBundle/Controllers.

Du kannst bei deiner Store-Definition noch mehr Parameter mitgeben wie z.B. filters. Hier mal ein Beispiel um nur die Attribute anzuzeigen, die auch eine ID haben. Das kannst du dann natürlich noch variieren mit anderen Properties usw.

```
        $form->setElement(
            'combo',
            'FooKey',
            array(
                'label' => 'FooLabel',
                'value' => "",
                'valueField' => 'id',
                'displayField' => 'columnName',
                'triggerAction' => 'all',
                'store' => 'new Ext.data.Store({
                    fields: ["id", "columnName"],
                       proxy : {
                         type : "ajax",
                         autoLoad : true,
                         api : {
                             read: document.location.pathname + \'attributeData/list?table=s_articles_attributes\',
                         },
                         reader : {
                             type : "json",
                             root : "data"
                           }
                        },
                         filters: [
                            function (record) {
                                return record.get("id") != null;
                            }
                        ]
                    })',
                'required' => false,
                'scope' => Shopware\Models\Config\Element::SCOPE_SHOP
            )
        );

```

&nbsp;

---

<div class="post-metadata">

**Author:** ![TeichDatensysteme](https://avatars.discourse-cdn.com/v4/letter/t/43a26b/32.png) [@TeichDatensysteme](https://forum.shopware.com/u/TeichDatensysteme)\
**Post date:** [23. Juni 2016 um 14:26 UTC](https://forum.shopware.com/t/plugin-remotecombo-mit-attributen-nicht-mehr-moglich-csrfwhitelistaware-sw-5-2/37649/6 "2016-06-23T14:26:41Z")

</div>

> [@Jan Bücker schrieb:](https://forum.shopware.com/profile/21387/Jan%20B%C3%BCcker "Jan%20B%C3%BCcker")
> 
> Hi Niklas,
> 
> vorab - der Controller liegt im AttributeBundle in engine/Shopware/AttributeBundle/Controllers.
> 
> Du kannst bei deiner Store-Definition noch mehr Parameter mitgeben wie z.B. filters. Hier mal ein Beispiel um nur die Attribute anzuzeigen, die auch eine ID haben. Das kannst du dann natürlich noch variieren mit anderen Properties usw.
> 
> $form-\>setElement(  
> ‚combo‘,  
> ‚FooKey‘,  
> array(  
> ‚label‘ =\> ‚FooLabel‘,  
> ‚value‘ =\> „“,  
> ‚valueField‘ =\> ‚id‘,  
> ‚displayField‘ =\> ‚columnName‘,  
> ‚triggerAction‘ =\> ‚all‘,  
> ‚store‘ =\> ‚new Ext.data.Store({  
> fields: [„id“, „columnName“],  
> proxy : {  
> type : „ajax“,  
> autoLoad : true,  
> api : {  
> read: document.location.pathname + 'attributeData/list?table=s\_articles\_attributes',  
> },  
> reader : {  
> type : „json“,  
> root : „data“  
> }  
> },  
> filters: [  
> function (record) {  
> return record.get(„id“) != null;  
> }  
> ]  
> })‘,  
> ‚required‘ =\> false,  
> ‚scope‘ =\> Shopware\Models\Config\Element::SCOPE\_SHOP  
> )  
> );
> 
> &nbsp;

&nbsp;

Hallo Jan!

Funktioniert perfekt, vielen vielen Dank!  
Einziger Wermutstropfen ist dann die nötige Neuinstallation von Plugins, um die Forms korrekt zu setzen - in Abhängigkeit der eingesetzt Shopware Version.  
Aber, das ist dann eben leider so - jedenfalls hat man jetzt mit dem Beispiel wenigstens wieder etwas, was wie vorher funktioniert.

Schöne Grüße und nochmals vielen Dank,  
Niklas Teich&nbsp;
