hallo zusammen, ich binde eingabefelder in die bearbeitung der artikel stammdaten ein. das funktioniert ohne probleme. derzeit übergebe ich einzeln meine werte z.b: model //{block name="backend/article/model/article/fields" append} { name: 'value01', type: 'string' } { name: 'value02', type: 'string' } { name: 'value03', type: 'string' } ... //{/block}
view getFields: function() { var me = this; return [{ name: 'value01', fieldLabel: 'value01', },{ name: 'value02', fieldLabel: 'value02', },{ name: 'value03', fieldLabel: 'value03', }, ...]; },
das ist meiner meinung nach nicht optimal. ich bin leider nich auf den trichter gekommen, wie das SWAG macht. ich würde gerne sowas in der art machen: model //{block name="backend/article/model/article/fields" append} { name: 'myParam', type: 'array' } //{/block}
view getFields: function() { var me = this; return [{ name: 'myParam[value01]', fieldLabel: 'value01', },{ name: 'myParam[value02]', fieldLabel: 'value02', },{ name: 'myParam[value03]', fieldLabel: 'value03', }, ...]; },
kann mir da jemand ein tipp geben, wie ich meine werte gebündelt übergeben kann, danke.
Hi, sowas wird in ExtJS als sog. “Assoziation” abgebildet. Wenn du dir vorstellst, dass ein Model ja quasi ein (JSON)-Objekt beschreibt wie dieses hier: { "name": "hase", "price": "33.12" }
dann beschreibt eine Assoziation folgenden Fall: { "name": "hase", "price": "33.12", "customers": [{ "name": "gerd", "city": "Lathen" }, { "name": "jan", "city": "Meppen" },] }
Eine Assoziation beschreibt, dass das übergeordnete Model einen associationkey hat (hier: “customers”) und dass die darin enthaltenen Objekte wiederum von einem anderen Model beschrieben werden. Das könnte dann so aussehen (aus dem Kopf, Abweichung möglich): Ext.define('Shopware.apps.Irgendwas.models.ModelName', { extends: 'Shopware.data.Model', fields: [{ name: "name", type: "string"}, { name: "price", type: "float"},], associations: [{ name: "getCustomers", associationKey: "customers", model:"Shopware.apps.Customer.model.Customer" }] });
So werden also letztlich verschachtelte Datenstrukturen abgebildet. Die Assoziationsfelder sind SW nicht so einfach erweiterbar, wenn dir die Attribute nicht reichen, kann man sich ja auch einfach einen eigenen Store schreiben, den man lädt - so bekommst du auch eigene, komplexere Daten in bestehende Module. Wenn du dafür bspw. die Artikel-ID des aktuell angezeigten Artikels benötigt, kannst du das über sog. “extraParams” auf dem Store machen, da haben wir im Core einige Beispiele. Besten Gruß, Daniel
hallo daniel, danke für die ausführliche beschreibung. ich glaub, dass ich erstmal einige lokale tests machen muss, um mir im klaren zu sein wie genau die übergaben ablaufen. damit ich dann in den richtigen blöcken meine werte beschreibe und erhalte. kurzer test war mal an //{block name="backend/article/model/detail/fields"}{/block}
die beschreibung dran zu hängen damit ich dann mit mainDetail[value01]
die werte erhalte. hat natürlich nicht geklappt