SW 5.2 - Plugin Entwicklung Backend - Id anzeigen lassen

Hallo,

wir haben ein kleines CRUD Plugin und würden uns gerne in der Listingansicht die ID anzeigen lassen. lt. Shopware Doku wird diese ja nicht angezeigt:

Generierung der Spalten

Das Shopware.grid.Panel erwartet bei der Instanzierung einen übergebenen Ext.data.Store, welches ein Ext.data.Model hinterlegt hat. Dieses Model dient als Grundlage für die Generierung der Spalten. Standardmäßig wird für das Erzielen schneller Resultate in der Backend Entwicklung für jedes Feld des Models, abgesehen vom id Feld , eine Spalte erzeugt

 

http://community.shopware.com/Shopware-Backend-Komponenten-Listingansicht\_detail\_1406.html

Wie kann man es denn im Plugin steuern um die ID doch anzeigen zu lassen?

Danke & Viele Grüße Oliver

So ich glaube ich kann es selbst beantworten. Ob das der richtige Weg ist weiß ich nicht.

  1. Wir inkludieren in der app.js eine eigene Kopie der Shopware.grid.Panel.js:

{include file=‘backend/my_plugin/application/Shopware.grid.Panel.js’}

  1. In dieser habe ich in der Funktion createColumn folgende Zeilen auskommentiert:

    /*
    if (model.idProperty === field.name) {
    return null;
    }
    */

Siehe da, die ID wird als Spalte angezeigt.

Viele Grüße Oliver

Hallo Oliver,

das ist nicht der richtige Weg. Eine deiner View Komponenten erbt ja vom Shopware.grid.Panel. Dort kannst du viel besser und sauberer die createColumn Funktion überschreiben.

Viele Grüße aus Schöppingen

cool Michael Telgmann

1 „Gefällt mir“

Hallo,

auch wir brauchen in einem Plugin die ID im Listing.

Kann man hier noch einen Lösungsansatz posten, wie das überschrieben wird?

Hier mein Ansatz (funktioniert aber nicht):

Ext.define('Shopware.apps.MeinPlugin.view.list.List', {
    extend: 'Shopware.grid.Panel',
    alias: 'widget.mein-plugin-listing-grid',
    region: 'center',

    configure: function() {
        return {
            columns: {
                id: this.createId,
                description: { header: 'Beschreibung' },
                active: { width: 60, flex: 0 }
            },
        };
    },
    createId: function(model, formField) {
        if(model.idProperty === formField.name)
        {
            return formField;
        }
    },
});,

Funktioniert aber leider nicht, such mir schon den Wolf…

Gruß

mahlzeit