Hallo miteinander, ich bin dabei ein PlugIn zu erstellen, welches die Hersteller um eine Anschrift erweitert. Die Erfassung der Anschrift beim Anlegen eines neuen Herstellers und die Veränderung der Anschrift beim Ändern eines Herstellers funktioniert. Leider werden die Daten der Anschrift weder in der Hersteller Übersicht noch beim Öffnen des Detail-Dialoges angezeigt. Die Daten der Anschrift werden in der Tabelle s_articles_supplier_attributes gespeichert. Für die Anzeige in der Übersicht habe ich folgende list.js in meinem PlugIn-Kontext angelegt. //{block name="backend/supplier/view/main/list" append} //{namespace name=backend/supplier/view/main} Ext.define('Shopware.apps.Supplier.view.main.VwlSupplierAddress.List', { override : 'Shopware.apps.Supplier.view.main.List', /\*\* \* Overrides the getGridColumns function of the overridden ExtJs object \* and inserts two new columns \* @return \*/ getGridColumns: function() { var me = this; return [{ header : '{s name=grid\_name}Name{/s}', dataIndex : 'name', renderer : me.nameColumn, width: 125 }, { header : 'Land', dataIndex : 'attribute[VwlCountry]', width : 25 }, { header : 'PLZ', dataIndex : 'attribute[VwlZip]', width : 75 }, { header : 'Ort', dataIndex : 'attribute[VwlCity]', width : 125 }, { header : 'Strasse', dataIndex : 'attribute[VwlStreet]', width : 0 }, { header : '{s name=grid\_articlecounter}Article{/s}', dataIndex : 'articleCounter', width : 50, renderer : me.articleCountColumn }, { header : '{s name=grid\_link}URL{/s}', dataIndex : 'link', width: 150, renderer : me.urlColumn }, { header : '{s name=grid\_description}Description{/s}', dataIndex : 'description', flex : 1, renderer : me.descriptionColumn }, { xtype : 'actioncolumn', width : 60, items : me.getActionColumn() } ]; } }); //{/block}
Die dazugehörende Attribute.js sieht so aus: //{block name="backend/supplier/model/attribute/fields" append} { name:'VwlCountry', type:'string', defaultValue:'de' }, { name:'VwlZip', type:'string' }, { name:'VwlCity', type:'string' }, { name:'VwlStreet', type:'string'}, //{/block}
Analog zum Beispiel “Schuhgrößen Erweiterung” habe ich in meiner Bootstrap.php folgende Funktion: public function afterGetListQueryBuilder(Enlight\_Hook\_HookArgs $arguments) { // get original builder $builder = $arguments-\>getReturn(); // add selection and join to original builder $builder-\>addSelect(array( 'attributes.VwlCountry', 'attributes.VwlZip', 'attributes.VwlCity', 'attributes.VwlStreet' )); $builder-\>leftJoin('supplier.attribute', 'attributes'); $arguments-\>setReturn($builder); }
Hat jemand eine Idee, was ich vergessen habe oder falsch mache? Vielen Dank im Voraus. Grüße Kurt
Hallo miteinander, hat wirklich niemand eine Idee? Ich habe das PlugIn hier zum Download bereit gestellt. Es wäre wirklich toll, wenn sich das mal einer von euch ansehen könnte. Danke und Grüße Kurt
Schritt 1: schau dir an, ob die zusätzlichen Attribute überhaupt im extjs model landen. Ein console.log() sollte Auskunft geben. Viele Grüße
Hallo miteinander, das Problem ist gelöst, mein Fehler war, dass ich die neuen Attribute in der Datei Attribute.js mit Großbuchstaben am Anfang aufgeführt habe. Grüße Kurt
1 „Gefällt mir“