Detailansicht mit Listing (OneToMany)

Hey Leute, neues Modul, neues Problem. Wir haben ein Plugin welches grundsätzlich aus zwei Models besteht. Model A: OneToMany B Model B: ManyToOne A ManyToOne Shopware.apps.Base.model.Article Soweit so gut. Detailansicht von Model A funktioniert. Auch der Tab für die Auflistung der verknüpften Datensätze (Model B) wird richtig erstellt. Die Detailansicht für Model B funktioniert ebenfalls. Ein paar Dinge machen allerdings Probleme: [list] [*] Die verknüpften Spalten werden nur mit ID angezeigt und nicht mit dem eigtl. gejointen Namen[/*] [*] Die Reloadfunktion für das Grid geht nicht. Genauso das anschließende Laden nach dem Abspeichern bzw. Hinzufügen neuer Einträge nicht. Grundsätzlich also das Neuladen des Grids.[/*][/list] Hier der Fehler nach dem Speichern und beim Reload: Uncaught TypeError: Cannot read property 'indexOf' of undefinedExt.String.urlAppend @ ext-all.js?201510221322:21 Ext.apply.urlAppend @ ext-all.js?201510221322:21 Ext.define.buildUrl @ ext-all.js?201510221322:21 Ext.define.buildRequest @ ext-all.js?201510221322:21 Ext.define.doRequest @ ext-all.js?201510221322:21 Ext.define.read @ ext-all.js?201510221322:21 Ext.define.load @ ext-all.js?201510221322:21b.implement.callParent @ ext-all.js?201510221322:21 Ext.define.load @ ext-all.js?201510221322:21Ext.define.read @ ext-all.js?201510221322:21 Ext.define.loadPage @ ext-all.js?201510221322:21Ext.override.doRefresh @ base?file=bootstrap&loggedIn=1447842245:989 Ext.define.fireHandler @ ext-all.js?201510221322:21Ext.define.onClick @ ext-all.js?201510221322:21(anonymous function) @ VM15143:6g @ ext-all.js?201510221322:21 Der Fehler geschiebt im UrlAppend. Deshalb haben wir uns mal angeschaut wo denn versucht wird die Daten für das Listing zu laden. Und siehe da…es fehlen die Proxyeinträge für die API-Calls. Aus diesem Grund kann keine URL zusammengebaut werden und sich keine neuen Daten geladen werden. Anbei noch unsere Implementierung der Problemstelle: Model B: configure: function () { return { listing: 'Shopware.apps.AdvancedReseller.view.list.CommissionArticle', detail: 'Shopware.apps.AdvancedReseller.view.detail.CommissionArticle', controller: 'CommissionArticle' }; } Nun die Frage: Wie teilt man an dieser Stelle mit welcher Store bzw. welche URL aufgerufen werden soll (=wie der Proxy aussehen soll)? Gerne stellen wir auch andere Quelltextstellen zur Verfügung. Auf Grund der Postlänge verzichten wir aber erstmal darauf. Hatte jemand das Problem schon einmal? Muss man auf andere Stellen achten? Vielen Dank im Voraus Gruß

Nabend,

ist zwar schon ein wenig älter der Beitrag, aber zur Zeit stehe ich genau vor dem gleichen Problem.
Was mir dabei noch aufgefallen ist:
Auch bei dem Beispiel von Shopware (Backend Components - Associations) zu Associationen kommt der gleiche Fehler. Es ist nicht möglich eine Variante hinzuzufügen oder eine vorhandene zu editieren. Beim reload des listings kommt ebenfalls der oben genante Fehler.

Gibt es dazu evtl. irgendwelche Informationen die weiterhelfen die OneToMany Association nutzen zu können?

Gruß

Danny
 

Hallo nochmal,

habe leider immer noch das Problem das der Fehler nach dem anlegen eines neuen Datensatzes oder beim update des listings geworfen wird und komme da einfach nicht weiter. Was noch als Problem dazukommt: Ich habe zwar eine eigene DetailView für das OneToMany Model, aber irgendwie werden komplett meine fieldset definitionen ignoriert.

Danny

Das würde mich auch brennend interessieren! @DannyDan‍ hast du eine Lösung gefunden?

Grüße Bernd

Moin @designhunger‍,

ja, ich hatte zwischenzeitlich das Problem lösen können. Ich hab das Beispiel aus dem Tutorial so erweitert, dass es möglich ist, mit der DetailView neue Datensätze anzulegen. Das OneToMany Listing funktioniert so auch einwandfrei.

Bei bedarf kann ich gerne das ganze Paket sharen.

Danny

 

P.S.: Trotzdem verstehe ich nicht warum das ganze nicht komplett im Tutorial mit enthalten ist. Denn so trivial ist das ganze nicht wie ich finde.

2 „Gefällt mir“

Moin @DannyDan‍,

das sind ja super Neuigkeiten! Auch in dem neuen Shopware Buch wird dieses Thema schön ausgespart und ich habe auch noch keine Lösung gefunden. Wäre dir also sehr dankbar, wenn du das Plugin mit mir teilen könntest - entweder per PN oder direkt hier.

Bernd

Nabend,

wie kann man denn hier zip Dateien anhängen? Wollte jetzt nicht unbedingt den kompletten Quellcode reinpasten. :frowning:

Danny

Das geht glaube ich nicht :slight_smile: Kannst du den Code als gist unter https://gist.github.com/ erstellen und verlinken? Da musst du allerdings auch “pasten”… Ansonsten wäre Dropbox noch eine Alternative.

Bernd

Danke nochmals an @DannyDan für die Lösung. Wenn das in Zukunft nochmals einer braucht, gerne eine PN an mich. 

Die weitere Erkenntnis des Tages lautet, dass man im Backend wohl nur CamelCase in den Models nutzen kann. Ich habe stundenlang versucht die Datenbank mit Unterstrich-Syntax zu befüllen und bin schier verzweifelt, weil keine Fehler geschmissen wurden. Da in der Datenbank sowohl CamelCase als auch Unterstriche von Shopware verwendet werden, dachte ich das sei egal… Ist das ExtJs spezifisch oder Shopware Magie?

Da ich mittlerweile fast wöchentlich eine Anfrage zu diesen Thema bekomme, hier das Paket zum Download:
https://www.dropbox.com/s/hieatvpzxtpx37k/SwagProductAssoc.zip?dl=0

Dabei nicht vergessen: All the praise goes to @DannyDan‍

2 „Gefällt mir“

Habe mal das was in der Dropbox is ausprobiert und das ganze führt trotzdem zu einem Fehler. Ich bekomme ab und zu 

 

ext-all-debug.js?201904021344:814 Uncaught TypeError: Cannot read property ‘indexOf’ of undefined
    at Object.urlAppend (ext-all-debug.js?201904021344:814)
    at Object.urlAppend (ext-all-debug.js?201904021344:6472)
    at constructor.buildUrl (ext-all-debug.js?201904021344:40119)
    at constructor.buildRequest (ext-all-debug.js?201904021344:39951)
    at constructor.doRequest (ext-all-debug.js?201904021344:50553)
    at constructor.read (ext-all-debug.js?201904021344:39910)
    at constructor.load (ext-all-debug.js?201904021344:48665)
    at constructor.callParent (ext-all-debug.js?201904021344:3735)
    at constructor.load (ext-all-debug.js?201904021344:51242)
    at constructor. (base?file=bootstrap&loggedIn=1562740580:5303)