Subshops in ExtjS auslesen

Hallo, in einen unsere Plugins möchten wir auch die Subshopfähigkeit implementieren. Dafür wollen wir die Anzahl der aktiven Shops aus der s_core_shops auslesen. Dies haben wir über einen Custom Store mit angebundenen Controller per AJAX in EXTJs gemacht. Durch die me.subshops = Ext.create(‚Shopware.apps.xxx.store.Subhop‘).load(); Werden die Daten richtig per JSON übermittelt. console.log( me.subshops ); console.log( me.subshops.data.length ); -> Liefert 0 obwohl 2 im Developer Tool steht console.log( me.subshops.items ); console.log( me.subshops.items[0].data); -> Undefined obwohl in items ein ObjectArray vorhanden sein soll laut DeveloperTool Lasse ich mit me.subshops per Console.log ausgeben sehe ich alles was ich brauche im DeveloperTool meines Browsers. Greife ich nun per JS auf me.subshops zu sind die rückgabewerte leer. Gibt es einen anderen Weg die Subshops im ExtJs Teil meines Plugins zu erhalten oder weiß jemand wie ich die Daten des bereits vorhandnen Stores richtig ansprechen muss.

Hallo kuomba, das Problem an deinen Ausgaben ist der asynchrone Aufruf der Daten. Soll heißen: Deine Logs werden eigentlich schon ausgegeben, bevor der AJAX-Call überhaupt fertig geladen ist. Die Lösung, die du suchst, wäre also ein Callback: me.subshops = Ext.create('Shopware.apps.xxx.store.Subhop').load({ callback: function () { console.log(me.subshops.data.length); } }); Das dürfte dann problemlos funktionieren. So stellst du sicher, dass der Ajax-Call schon fertig geladen ist, bevor du mit den Daten arbeitest. Grobe Ausgaben über console.log() können auch bei Ajax-Calls asynchron nachgeladen werden. Sobald du aber genauere Daten abfragst (bspw. die genaue Anzahl der Ergebnisse), funktioniert das mit dem Nachladen nicht mehr. Das erklärt auch, warum du in „me.subshops“ noch Ergebnisse siehst, die genaue Abfrage nach der Anzahl jedoch scheitert. Wirklich detailiert und verständlich kann ich dir das leider auch nicht erklären, dafür stecke ich nicht genug in der Materie. Ich hoffe dir damit ein wenig geholfen zu haben. Gruß, Patrick :shopware:

1 „Gefällt mir“

Hallo Patrick, danke für die Info. Ich habe bei der ganzen Sache nicht bedacht, dass ich ein Asycn Aufruf mache. Zu dieser Zeit sind die Daten „selten“/nicht vorhanden. Danke Dir!