Hallo liebe shopware - Gemeinde, ich möchte gerne ein weiteres Auswahlfeld (Combobox) ähnlich des Herstellers in der Artikel-Detailansicht hinzufügen. Einen Bereich habe ich schon erzeugt, das Auswahlfeld auch: me.combo = Ext.create('Ext.form.field.ComboBox', { xtype: 'combo', name: 'attribute[mycombo]', queryMode: 'local', store: ['A','B','C'], fieldLabel: 'Comboxbox', labelWidth: 155, anchor: '100%' });
Wenn ich den Store so implementiere, stellt er mir die drei Werte zur Auswahl. Ich möchte nun aber gerne, dass er mir dort meinen eigenen Store anzeigt. Ich habe dazu ein eigenes CustomModel erzeugt und über die entsprechende Eingabemaske Werte eingetragen (diese sollen dann in der Combobox ausgewählt werden können). Ein Tutorial für diesen Fall habe ich leider nicht gefunden. Könnte mir jemand einen Tipp oder Hilfe geben? Müsste ich bspw. den Block “backend/article/store/detail” (backend/article/store/detail.js) erweitern, damit mein eigenes Model (CustomModel) geladen wird? Das zweite ist, dass es den ausgewählten Wert in der Combobox nicht in mein Artikel-Attributfeld “mycombo” überträgt - es kommt immer NULL an. Woran könnte das liegen? Beste Grüße Sebastian
Dieses Tutorial wird alle deine Fragen klären: http://community.shopware.com/Schuhgroe … 2_868.html Eine combobox erwartet einen store und keine models. Also stelle auch einen store bereit, der deine models lädt. Ein „hard coded“ store könnte so aussehen: store: Ext.create( "Ext.data.Store", { fields: ["id", "name"], data: [{ id: 1, name: "A" }, { id: 2, name: "B" }] } )
Viele Grüße
[quote=“Aquatuning GmbH”]Dieses Tutorial wird alle deine Fragen klären: http://community.shopware.com/Schuhgroe … 2_868.html Eine combobox erwartet einen store und keine models. Also stelle auch einen store bereit, der deine models lädt. Ein “hard coded” store könnte so aussehen: store: Ext.create( "Ext.data.Store", { fields: ["id", "name"], data: [{ id: 1, name: "A" }, { id: 2, name: "B" }] } )
Viele Grüße[/quote] Hallo Aquatuning, danke erstmal für deine Antwort. Ich kenne das Tutorial, nur ist es leider nicht das, was ich benötige, da es den Teil erklärt, den ich bereits habe (das zusätzliche Attributfeld, wo es dann den Wert drin speichern soll). Kurzes Beispiel, was ich brauche: zu einem Artikel soll der Vertriebsmitarbeiter mit erfasst (und ausgewählt werden), dieser ist aber ungleich der angemeldeten Benutzer im Backend und ungleich der Kunden. Somit habe ich ein eigene Tabelle mit Klasse, Model etc. für das Anlegen der Vertriebsmitarbeiter mit ihrem spezifischen Daten erstellt. Nun möchte ich aber in meinem Auswahlfeld bei dem Artikel auf diese “Vertriebsmitarbeitertabelle” zugreifen, sodass ich die ID des Vertriebsmitarbeiters in meinem zusätzlichen Attributfeld des Artikels speichern kann. Ich habe das alles auch schon soweit, nur komme ich jetzt eben nicht weiter, wie ich dem Auswahlfeld beim Artikel (ähnlicher Fall also wie beim Hersteller-Auswahlfeld) nun mitteile, dass es auf meine Klasse, Model oder Tabelle zugreifen soll und dort die Werte holen soll, die im Auswahlfeld dann auswählbar sind. Wäre das mein Ansatz? Aber ansich dürfte dem Artikel mein Model doch gar nicht bekannt sein oder (http://docs.sencha.com/extjs/4.0.7/#!/a … data.Store)? Oder wie genau stelle ich einen Store bereit, der mein neues, eigenes Model lädt? Ext.define('MeinModel', { extend: 'Ext.data.Model' }); Ext.create('Ext.data.Store', { model: 'MeinModel', ... });
Funktioniert tut es so auf jeden Fall nicht. Müsste ich die app.js des Articles dann um mein Model erweitern? Ich habe ja schon einen eigenen Store innerhalb der neuen Klasse/Model für die “Vertriebsmitarbeiter” erstellt. Wie greife ich nun beim Artikel auf diesen zu? Ext.define('Shopware.apps.Vertrieb.store.Vertrieb', { extend:'Shopware.store.Listing', configure: function() { return { controller: 'Vertrieb' }; }, model: 'Shopware.apps.Vertrieb.model.Vertrieb' });
Beste Grüße Sebastian
[quote=“sschreier”]Müsste ich die app.js des Articles dann um mein Model erweitern? [/quote] Das ist wohl die Kernfrage - und genau diese Frage wird in dem Tutorial besprochen und beantwortet. Auch die Schuhgrößen Erweiterung bringt eigene .js Dateien mit, die geladen werden müssen. Viele Grüße
[quote=“Aquatuning GmbH”][quote=“sschreier”]Müsste ich die app.js des Articles dann um mein Model erweitern? [/quote] Das ist wohl die Kernfrage - und genau diese Frage wird in dem Tutorial besprochen und beantwortet. Auch die Schuhgrößen Erweiterung bringt eigene .js Dateien mit, die geladen werden müssen. Viele Grüße[/quote] Hallo, du meinst also es reicht zu, wenn ich die app.js von article um meinen Store und Model erweitere? Wenn ja, wie? Im Tutorial ist das ja nur für Views erklärt. Und wie spreche ich dann in meinem ExtJs-Store-Element meinen definierten Store an? Im Tutorial steht ja nicht wirklich drin, wie man einen eigenen Store ansprechen kann. Beste Grüße Sebastian
Moin, ich habe das gleiche Problem, eigener Store, den ich in einer COmbobox bei den Artikeldetails laden möchte. Gibt es hierzu schon eine Lösung, hatte es bei dir mit der app.js geklappt? Gruß ideenwirbler
Bei mir hat es geklappt die app.js des Artikel-Models um meinen Store und mein Model zu erweitern. Dann konnte ich den Store einfach in der Methode laden und die Werte wurden angezeigt. Gruß ideenwirbler
[quote=“Ideenwirbler”]Bei mir hat es geklappt die app.js des Artikel-Models um meinen Store und mein Model zu erweitern. Dann konnte ich den Store einfach in der Methode laden und die Werte wurden angezeigt. Gruß ideenwirbler[/quote] Hallo, danke erstmal für deine Hilfe. Ich konnte den eigenen Store nun auch einbinden, nur kommt jetzt, wenn ich mein eigenes Modul über den Menüpunkt aufrufe, folgendes: TypeError: cls is null cls.prototype.subApp = this;
Wenn ich $view->extendsTemplate(‘backend/test/article/view/detail/window.js’) ausblende, wo sich die Combobox mit dem Store befindet, funktioniert mein Modul wieder. Bei den Varianten ist fast der gleiche Code, lass ich das eingeblendet, funktioniert sowohl das Modul als auch der Store bei den Varianten. Nur eben in der Detailansicht nicht, weil er dort ja ausgeblendet ist. Woran könnte das liegen? Ohne den Modulaufruf kann man den Store ja nicht weiter befüllen. Der Code in der Detailansicht ist: //{block name="backend/article/view/detail/window" append} Ext.define('Shopware.apps.Test.view.detail.Window', { override: 'Shopware.apps.Article.view.detail.Window', createBaseTab: function() { var me = this, panelTab = me.callParent(arguments), testStore = Ext.create("Shopware.apps.Teststore.store.Teststore").load(); var testCombo = Ext.create('Ext.form.field.ComboBox', { name: 'attribute[attrTest]', queryMode: 'local', store: testStore, valueField: 'id', displayField: 'name', fieldLabel: '{s name=LabelTitle}Test{/s}', emptyText: '{s name=EmptyText}Bitte wählen ...{/s}', labelWidth: 155, anchor: '100%' }); fieldset = Ext.create('Ext.form.FieldSet', { layout: 'anchor', title: '{s name=FieldSetTitle}Test{/s}', items: [testCombo] }); me.detailForm.insert(1, fieldset); return panelTab; } }); //{/block}
Blende ich den Store aus, funktioniert es auch nicht, daran kann es also nicht liegen. Nur wenn ich die komplette window.js ausblende, funktioniert sowohl das Modul als auch meine Combobox mit Inhalt bei den Varianten. Nur brauch ich ja die Combobox mit Inhalt auch in der Detailansicht. Beste Grüße Sebastian
Hi, ich würde Ext.define('Shopware.apps.Test.view.detail.Window', { override: 'Shopware.apps.Article.view.detail.Window',
durch Ext.override(Shopware.apps.Article.view.detail.Window, {
ersetzen. Das sollte eigentlich reichen. Gruß ideenwirbler
[quote=“Ideenwirbler”]Hi, ich würde Ext.define('Shopware.apps.Test.view.detail.Window', { override: 'Shopware.apps.Article.view.detail.Window',
durch Ext.override(Shopware.apps.Article.view.detail.Window, {
ersetzen. Das sollte eigentlich reichen. Gruß ideenwirbler[/quote] Das scheint es, erschreckenderweise, gewesen zu sein, wobei ich das auch schonmal drin hatte, nur wahrscheinlich in einer anderen, nicht funktionierenden Konstellation. Ich danke dir. Beste Grüße Sebastian