Hallo liebe shopware - Gemeinde, ich würde gerne die Varianten-Detailseite um ein zusätzliches Feld erweitern. Ext.create speichert das FieldSet ja auf keiner Variable, muss ich da also den ganzen Inhalt noch einmal mit übergeben oder kann ich mein Feld irgendwie nur dranhängen? Bisherige Lösung wäre, die auch funktioniert, aber eher der “override”-Fall wäre (natürlich in meiner eigenen Datei mit //{block name=“backend/article/view/variant/detail” append}): ... createBaseFieldSet: function() { var me = this, articleId; articleId = null; if (me.record) { articleId = me.record.get('id'); } return Ext.create('Ext.form.FieldSet', { title: me.snippets.baseFieldSet.title, layout: 'anchor', margin: '15 0 10', defaults: { anchor: '100%', labelWidth: 155 }, items: [{ xtype: 'textfield', name: 'number', fieldLabel: me.snippets.baseFieldSet.number, allowBlank: false, enableKeyEvents:true, checkChangeBuffer:700, vtype:'remote', validationUrl: '{url action="validateNumber"}', validationRequestParam: articleId, validationErrorMsg: me.snippets.baseFieldSet.numberValidation }, { xtype: 'textfield', allowBlank: true, name: 'additionalText', translatable: true, fieldLabel: me.snippets.baseFieldSet.additionalText, supportText: me.snippets.baseFieldSet.additionalTextSupport }, { xtype: 'checkbox', name: 'active', fieldLabel: me.snippets.baseFieldSet.active, boxLabel: me.snippets.baseFieldSet.activeBox, inputValue: true, uncheckedValue:false }, { xtype: 'textfield', name: 'attribute[attrMy]', allowBlank: false, fieldLabel: 'Mein Attribut', anchor:'100%', labelWidth:150 }] }); } ...
Andere nicht funktionierende Ansätze: createBaseFieldSet: function() { var me = this, fields = me.callOverridden(arguments); var fieldAttributeField = { xtype: 'textfield', name: 'attribute[attrMy]', allowBlank: false, fieldLabel: 'Mein Attribut', anchor:'100%', labelWidth:150 }; fields = Ext.Array.insert(fields, 0, [fieldAttributeField]); return fields; }
createBaseFieldSet: function() { var me = this, fields = me.callParent(arguments); fields.push({ xtype: 'textfield', name: 'attribute[attrMy]', allowBlank: false, fieldLabel: 'Mein Attribut', anchor:'100%', labelWidth:150 }); return fields; }
Beste Grüße Sebastian
Ich hab das für Varianten bislang stets über ein komplett neues Fieldset, das meine custom fields enthält, gelöst. Das dann in den return value von createFormItems pushen. createFormItems: function() { var me = this; var formItems = me.callParent(arguments); var fieldSet = Ext.create('Shopware.apps.Article.view.detail.wbmdetail.Preferences'); formItems.push(fieldSet); return formItems; }
Theoretisch sollte aber auch folgender Weg funktionieren, wenn du in das bestehende Fieldset inserten willst. createBaseFieldSet: function() { var me = this, fieldSet = me.callParent(arguments); var fieldAttributeField = Ext.create('Ext.form.field.Text', { name: 'attribute[attrMy]', allowBlank: false, fieldLabel: 'Mein Attribut', anchor:'100%', labelWidth:150 }); fieldSet.insert(0, fieldAttributeField); return fieldSet; }
[quote=„d.coder“] createFormItems: function() { var me = this; var formItems = me.callParent(arguments); var fieldSet = Ext.create('Shopware.apps.Article.view.detail.wbmdetail.Preferences'); formItems.push(fieldSet); return formItems; }
createBaseFieldSet: function() { var me = this, fieldSet = me.callParent(arguments); var fieldAttributeField = Ext.create('Ext.form.field.Text', { name: 'attribute[attrMy]', allowBlank: false, fieldLabel: 'Mein Attribut', anchor:'100%', labelWidth:150 }); fieldSet.insert(0, fieldAttributeField); return fieldSet; }
[/quote] Hallo, beide Varianten von dir funktionieren natürlich =) - da war ich bei meinen 2 Versuchen von oben ja schon fast an der richtigen Lösung dran. Ich danke dir. Beste Grüße Sebastian