Neues Attribute-System: Eigene Entity für Multiselect

hi, ich habe laut Beispiel (Attribute system) eine eigene Entität für ein Multiselect angelegt. 

Leider kann ich dieses jetzt im Backend unter Einstellungen->Freitextfeld-Verwaltung aber nicht editieren.   In der Datenbank kann ich die Optionen hinzufügen und diese stehen bei den Artikeldetails auch zur Verfügung. Was muss ich machen damit ich das auch in der Freitextfeld-Verwaltung bearbeiten kann?

Zudem werden mir im Frontend dann nur die ID’s der gewählten Optionen ausgegeben (’|1|2|’) Ich hätte aber gern auch den $name ung ggf. $description zur Verfügung.

Jemand einen Tipp?

 

 

niemand eine Idee?

schade, dass neue Funktionen immer nur halbherzig dokumentiert und somit nur sehr schwierig umzusetzen sind …

@hbee schrieb:

schade, dass neue Funktionen immer nur halbherzig dokumentiert und somit nur sehr schwierig umzusetzen sind …

Dem kann ich mich nur anschließen. 

Hi,

damit das Attribute auch in der Freitextverwaltung bearbeitet werden kann musst du folgendes im PHP ergänzen:

$service->update(
    's_articles_attributes',
    'my_multi_selection',
    'multi_selection',
    [
        'entity' => \SwagAttribute\Models\SwagAttribute::class,
        'displayInBackend' => true,
        'label' => 'My multi selection',
        'custom' => true
    ],
    null,
    true
);

 

Durch den Wert “custom” wird definiert, dass der Kunde/Shopbetreiber dieses auch editieren darf. Dieses Flag wurde eingebaut, damit Attribute aus Plugins nicht einfach in Ihrer Datenstruktur geändert werden können, ohne das der Plugin Entwickler dies gewollt hätte. Daher muss dies im Plugin erst explizit freigeschaltet werden.

Nun zu der anderen Frage: “es werden nur die IDS ausgelesen”. Das stimmt, anders ist dies auch nicht möglich da sonst zum einen die Performance leiden würde und zum anderen es recht schnell zu Dauerschleifen kommen könnte.

Wenn z.B. der Artikel ein Attribute hat in dem mehrere Artikel hinterlegt werden. In diesem Artikeln sind dann wieder weitere Artikel verknüpft welche wieder im Frontend ausgelesen werden müssten, usw.

Hoffe das hilft dir weiter.

Nachtrag,

wenn du das Attribute dann in der Verwaltung modifizieren kannst, wird dir wahrscheinlich auffallen, dass du dein eigenes Entity nicht in der Auswahl findest. Das kommt daher da die möglichen Entities nicht einfach alle sind sondern über diese Funktion geladen werden. Hier müsstest du dein Entity entsprechend hinzufügen wenn du möchtest, dass dieses dort zur Verfügung steht

1 Like

Wie erweitert man denn die Liste der verfügbaren Entitäten updatesicher? 8 Updates lang wird die Datei nicte angefaßt und wenn es dann doch soweit ist, dann weiß keiner mehr, dass man in shopware/engine/Shopware/Bundle/AttributeBundle/Service/TypeMapping.php die eigene Entität wieder hinzufügen muss.

Schreib dir einen eigenen CompilerPass der den Container Parameter erweitert

Hast Du da ein Beispiel oder Doku-Links?