Hallo zusammen, ich würde gerne den Hersteller Datensatz um ein 2tes Bild erweitern. Hab ein funktionierendes Grundgerüst wo auch schon ein neues Textfeld hinzugefügt wird über die getFormTopPart(). Nun möchste ich das MediaManager Upload unter dem schon bestehenden haben. Das wird in der Funktion getDropZone() erzeugt. Aber wie genau bekomme ich es jetzt hin das nicht nur mein neues angezeigt wird sondern auch das alte Feld? So sieht meine Funktion bisher aus und liefert so natürlich nur das neue Feld zurück: getDropZone : function() { var me = this, logoPanel = me.callParent(arguments); var logoSelect = Ext.create('Shopware.MediaManager.MediaSelection', { fieldLabel : '{s name=form\_logo}Logo Red{/s}', name : 'attribute[img2]', supportText : '{s name=logo\_support}Supplier logo selection via Media Manager. The selection is limited to one media.{/s}', multiSelect : false, anchor : '100%', labelWidth : 100, albumId: -12 // Default supplier albumId }); return logoSelect; }
Danke für eure Hilfe
Ui - beim Hersteller ist eine “saubere” Lösung nicht ganz möglich. Überschreibe die Methode getInfoForm(), erzeuge dein zweites MediaSelection Element und füge es in die Rückgabe von getInfoForm() passend ein. Beispielhaft: getInfoForm : function() { var me = this; var form = me.callParent(arguments); var EIGENES\_ELEMENT = me.ERZEUGE\_EIGENES\_ELEMENT(); form.items[0].items[2].items.push( DEIN\_NEUES\_ELEMENT ); return form; }
Viele Grüße
Hi, wenn ich die getInfoForm() komplett überschreibe klappt es aber ein erweitern bekomme ich nicht hin. Mit deinem code bekomme ich den Fehler: TypeError: form.items[0] is undefined
grüße
Versuchst du die Datei templates/_default/backend/supplier/view/main/edit.js direkt zu editieren oder schreibst du ein Plugin? Viele Grüße
Ich hab ein Plugin mit der edit.js und der create.js
Zeig mal bitte deine komplette edit.js. Viele Grüße
Hi die schaut so aus: //{block name="backend/supplier/view/main/edit" append} Ext.override(Shopware.apps.Supplier.view.main.Edit, { /\*\* \* Returns the media selector for the supplier module \* \* @return Shopware.MediaManager.MediaSelection \*/ getDropZone2 : function() { return Ext.create('Shopware.MediaManager.MediaSelection', { fieldLabel : '{s name=form\_logo\_red}Logo in red{/s}', name : 'attribute[e23LogoRed]', supportText : '{s name=logo\_support\_red}Supplier logo in red.{/s}', multiSelect : false, anchor : '100%', labelWidth : 100, albumId: -12 // Default supplier albumId }); }, /\*\* \* Return the entire form uses the methods \* - getFormDefaults \* \* @return Ext.form.Panel \*/ getInfoForm : function() { var me = this; var form = me.callParent(arguments); var newLogo = me.getDropZone2(); form.items[0].items[2].items.push(newLogo); return form; } }); //{/block}
grüße
Ok, das verstehe ich nicht… form müsste ein Ext.form.Panel sein form.items müsste ein Array aus den items aus form.items[0] müsste ein container sein form.items[0].items müsste ein Array der Inhalte des containers sein form.items[0].items[3] müsste der untere container mit einem HTML Editor und einer MediaSelection sein Bitte schau dir mal die Ausgabe von console.log( form ) an und poste diese hier. Viele Grüße
hmm in der console bekomme ich ja nur das: Object { collapsible=false, split=false, region="center", mehr...}
Oder wie kann ich das komplette form mir ausgeben und kopieren?
Also wenn ich es hier rein pushe klappt es: form.items.items[0].items.items[2].items.items.push(newLogo);
Grüße
Ah doch nicht - wird zwar korrekt angezeigt aber der Browser hängt sich auf…