extjs4 assoziationen

wäre schön wenn jemand lösungen/hinweise/links zur folgenden problemen hätte.

hier mein test plugin: https://github.com/hlb-schmidt/FooBat

es sollte haben:

  • liste von Bats
  • Bat hat ne liste von Kats
  • Kat hat 2 assoziationen zur shopware kategorie
  • Kat.cat1 sollte nur “oberste” kategorien anzeigen
  • Kat.cat2 sollte nur unter kategorien von Kat.cat1 anzeigen

weil speichern/erstellen momentan kaum funktioniert, hier mal test daten für das plugin: (für vanilla shopware 5.4.2 mit deutschen demo daten)

INSERT INTO `foobat_bat` (`id`, `name`) VALUES (1, 'bat1');
INSERT INTO `foobat_kat` (`id`, `bat_id`, `name`, `cat1_id`, `cat2_id`) VALUES (1, 1, 'bat1-kat1', 5, 8);

referenz screenshot für die fragen:

 

problem 1 : window title von view setzen

wie setzen wir die titel von extjs window von view aus? die untere Bat detail fenster sollte Kat detail heißen.
(die widgets bat-view-detail und kat-view-detail beide benutzen dieselbe window-view-detail und da ist momentan die title hart-kodiert.)

 

problem 2 : extjs combobox label

in der oberen Bat detail fenster sieht man für Cat1 und Cat2 das die shopware category name automagisch benutzt wird (weil ich nichts dafür codiert habe) aber für die combobox in unteren Bat detail (was eigentlich Kat detail ist) nicht (zeigt [object Object]). was müssen wir tun das auch der combobox die shopware category name benutzt? (lustige weise ist die dropdown korrekt mit shopware category namen gefüllt)

 

problem 3 : extjs combobox drodown werte filtern

weil die comboboxen noch nicht richtig funktionieren, habe ich garnicht damit befasst, aber wie filtern wir was in der dropdown von Cat1 drin ist? und wie triggern wir dann ne filter für Cat2 dropdown werte wenn Cat1 sich ändert?

 

problem 4 : speichern

eigentlich funktioniert speichern nur für Bat name. alles andere wird nicht gespeichert (es kommt aber auch kein fehler), und da habe ich keine ahnung ob es jetzt an irgendwelce fehlende einstellungen für automagie liegt, oder ob was manuell geschrieben werden muss. also, wieso speichert es nicht? was muss ich korrigieren/implementieren?

Cheers…

 

hab jetzt ne vorübergehende lösung für die window title (problem 1)…

diff --git a/Resources/views/backend/foo_bat/view/detail/kat.js b/Resources/views/backend/foo_bat/view/detail/kat.js
index 9f3a163..0b0cac0 100644
--- a/Resources/views/backend/foo_bat/view/detail/kat.js
+++ b/Resources/views/backend/foo_bat/view/detail/kat.js
@@ -6,5 +6,13 @@ Ext.define('Shopware.apps.FooBat.view.detail.Kat', {
         return {
             controller: 'FooBat',
         };
+ },
+
+ onAdded: function (parent) {
+ this.callParent(arguments);
+ // todo: this cant be right that we need 1ms delay to get the window!?
+ window.setTimeout(()=>{
+ parent.up("window-view-detail").setTitle("Kat detail");
+ }, 1);
     }
 });

zur info, ich habe durch anderen kanälen erfahren das “Shopware-Backend-Komponenten nicht richtig mit einer zweiten Assoziationsebene umgehen können” und man muss ab da alles manuell machen.