Criteria in sw-entity-single-select component in der PluginKonfiguration setzen

Hallo zusammen,

ich nutze in meiner PluginKonfiguration die sw-entity-single-select Komponente, funktioniert auch einwandfrei. Wenn ich mir die Komponente anschaue kann ich Werte wie bspw. LabelProperty einfach über den gleichnamigen XMLKnoten überschreiben. Funktioniert auch. Jetzt würde ich gerne auch die Property Criteria überschreiben um nicht alle Entities zur Auswahl zu haben. Hier ist der Type aber Object (Entity und Co. sind Strings). Wie kann ich nun in der config.xml im criteria Knoten ein Objekt definieren? Ist das überhaupt möglich?

https://github.com/shopware/platform/blob/6.1/src/Administration/Resources/app/administration/src/app/component/form/select/entity/sw-entity-single-select/index.js#L50

1 „Gefällt mir“

Hallo [@Moritz Naczenski](http://forum.shopware.com/profile/14574/Moritz Naczenski „Moritz Naczenski“)‍ ,

gibt es dafür eine Lösung? Ist als Pluginhersteller ein wichtiger Punkt und für mich auch interessant.

Beste Dank
ottscho

@Shopware push

Hallo,

das ist so ohne weiteres nicht möglich. Wie schon richtig erkannt, ist das criteria ein Objekt. In der config XML Datei habt ihr aber natürlich nur die Möglichkeit statische Werte wie strings oder Zahlen einzutragen. 
Es müsste also erst die Möglichkeit geschaffen werden über ein XML Konstrukt einen Filter zu bauen, der dann als Criteria in die Komponente gegeben wird. Gerne könnt ihr dafür ein Ticket aufmachen. 
Für Shopware 6.2 haben wir bereits einiges an der Plugin Config verbessert. Vielleicht habt ihr ja mal die Möglichkeit auf den aktuellen Master Entwicklungsbranch zu schauen. 

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo Michael,

ein Ticket wurde nun erstellt: https://issues.shopware.com/issues/NEXT-7670
Ein Mapping für den Bestell-Status in den Plugin Einstellungen ist für viele Pluginhersteller wichtig. Da muss es eine Lösung geben.
Oder hast du ein Workaround?

Grüße
ottscho

Hallo ottscho,

meinst du eine Auswahl der Status? Du kannst doch jetzt bereits Selections für Entities nutzen: https://docs.shopware.com/en/shopware-platform-dev-en/internals/plugins/plugin-config#render-a-product-entity-single-select
Oder verstehe ich dein Problem nicht?  Smile

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo Michael,

das Problem ist wie im Ticket beschrieben

Wir haben ein Statusmapping eines Bestellimports, der Kunde kann hier bspw. festlegen welchen Status eine importierte Bestellung haben soll. Verwendet wird also die Entity state_machine_state und lädt alle verfügbaren Status Entities. Nun gibt es hier aber 3 mal den Status „open“ (order, order_delivery, order_transaction). Auseinander halten lassen diese sich im Dropdown gar nicht, und auch die Position ist nicht aussagekräftig aufgrund der UUIDs. Auch lässt sich kein anderes Feld als Ausgabewert bestimmen, da diese einfach absolut identisch sind, mit Ausnahme der state_machine_id, welche aber verständlicherweise auch nicht genutzt werden kann.

Wählt nun also ein Kunde das falsche „open“ kann er nachher den Bestellstatus der Bestellung im Backend nicht mehr ändern, da hierfür keine state_transition hinterlegt ist. Es ist also nicht mehr bedienbar.

Deswegen muss die Auswahl filterbar sein. 

Hallo,

ja das hatte ich verstanden  Smile Ich dachte es geht noch mal um eine generelle Auswahl von Entitäten

Viele Grüße aus Schöppingen

cool Michael Telgmann

Hallo Michael,

Die generelle Auswahl der Entitäten ist kein Problem. Es geht um die State und die Selektierung, damit nur die richtigen Datensätze angezeigt werden bzw. ausgewählt werden können.

Gibt es hier bereits einen Fortschritt? Das Ticket ist im Backlog gelandet und scheinbar nicht mehr auf einer Roadmap. Gibt es einen Workaround fuer das Urspruengliche Problem im Ticket, also die State-Machine-States fuer die Plugin-Config nach einer bestimmten State-Machine zu filter, um z.b. nur Bestell-Status im Dropdown zu haben?

Hi Oli,

die einzige mir bekannte Lösung ist eine eigene Componente für die Config zu schreiben. Hier ein Beispiel.
custom/plugins/OwnPlugin/src/Resources/app/administration/src/component/entity/own-state-select/index.js

const { Component } = Shopware;
const { Criteria } = Shopware.Data;

Component.extend('own-state-select', 'sw-entity-single-select', {
    props: {
        criteria: {
            type: Object,
            required: false,
            default() {
                const criteria = new Criteria(1, this.resultLimit);
                criteria.addFilter(Criteria.equals('stateMachine.technicalName', 'order_delivery.state'));
                return criteria;
            }
        },
    }
});

<component name="own-state-select">
            <name>orderComplete</name>
            <entity>state_machine_state</entity>
            <label>Orderstate for filtered orders</label>
        </component>
1 „Gefällt mir“

Danke, das ist doch ein gangbarer Weg!