Liebe Shopware Community, Ich verzweifle ein wenig daran, bei der Erstellung eines neuen Einkaufswelten-Elementes. Ich beziehe mich hier auf folgenden Artikel: http://wiki.shopware.de/Eigene-Einkaufs … _1459.html In diesem Artikel steht, dass man über die Methode „createComboBoxField“ eine ComboBox hinzufügen kann. Soweit sogut. Doch wie befülle ich diese ComboBox mit Werten (erstmal statisch)? Und dann der nächste Schritt: Wie kann ich es hinbekommen, dass die Werte dynamisch bezogen werden? D.H. wenn der Benutzer das Element bearbeitet möchte ich über eine PHP-Methode diese Werte generieren lassen. Wie kann ich also nun meine Methode an die ComboBox „anschließen“? Findet ihr das Shopware Einkaufswelten System auch so schwer zu programmieren? Mit freundlichen Grüßen Herbert
Hallo Community, ich habe eigentlich genau das gleiche Problem und wollte daher nochmal veresuchen ob von euch einer bei diesem Thema weiterhelfen kann. In der bootstrap.php möchte ich eine ComboBox erstellen das geht ja mit folgendem Code: $component->createComboBoxField(array( ‘name’ => ‘element_name’, ‘displayField’ => “”, ‘valueField’ => “”, ‘fieldLabel’ => ‘’, ‘supportText’ => ‘’, ‘helpTitle’ => ‘’, ‘helpText’ => ‘’, ‘defaultValue’ => ‘’, ‘allowBlank’ => false )); Wie genau muss ich nun die Elemente füllen damit mir auch im Backend Optionen angezeigt werden? Ich habe schon vieles versucht, jedoch immer ohne Erfolg. Ich hoffe ihr habt die Lösung.
Schade, dass das niemand weiß.
Ja, dass wäre wirklich nett wenn da jemand helfen könnte - es gibt keinerlei Dokumentation dazu… Ich vermute der richtige Weg ist über: 'store' =\> 'Shopware.apps.MeinPlugin.store.MeinStore'
Aber das schaffe ich noch nicht umzusetzen… (über ExtJS) Ein Versuch mit Arrays: 'valueField' =\> array("value1","value2","value3"), 'displayField' =\>array("display1","display2","display3"),
schlug bei mir ebenfalls fehl… MfG deZerver
Du erstellst eine ComboBox per $component-\>createComboBoxField(array( 'name' =\> 'comobox\_name', 'fieldLabel' =\> 'ComboBox', 'valueField' =\> 'id', 'displayField' =\> 'title', 'store' =\> 'Shopware.apps.PLUGINNAME.store.DATEINAME', 'allowBlank' =\> false ));
wobei “valueField” angibt, welche Property des Models als “value” verwendet werden soll und “displayField” gibt an, welche Property als “label” verwendet werden soll. “store” ist hier, die Store Data Datei aus dem Plugin. D. h. ich lade meine Daten aus einem Backend-Plugin in meine ComboBox. Dieses Backendplugin habe ich aber selbst erstellt und für die Anzeige braucht man sowieso eine Store Datei. Wenn du Daten eines bereits bestehenden Plugins ausgeben möchtest, musst du darin nach einem “store” Ordner suchen. Um mein Backend-Plugin zu erstellen, habe ich folgendes Tutorial zur Hilfe genommen: http://wiki.shopware.de/Shopware-Backen … 2_871.html Meine Store schaut wie folgt aus: Ext.define('Shopware.apps.PLUGINNAME.store.DATEINAME', { /\*\* \* Extend for the standard ExtJS 4 \* @string \*/ extend:'Shopware.store.Listing', configure: function() { return { controller: 'CONTROLLERNAME' }; }, model:'Shopware.apps.PLUGINNAME.model.DATEINAME' });
Damit sage ich, er soll die Daten aus dem Model “storen” wie in einem Repository. Mein Model wiederum schaut wie folgt aus: Ext.define('Shopware.apps.PLUGINNAME.model.DATEINAME', { /\*\* \* Extends the shopware model \* @string \*/ extend : 'Shopware.data.Model', configure: function() { return { controller: 'CONTROLLERNAME', detail: 'Shopware.apps.PLUGINNAME.view.detail.DATEINAME' }; }, /\*\* \* The fields used for this model \* @array \*/ fields : [{ name : 'id', type : 'int' }, { name : 'title', type : 'string' },] });